[iOS] required init?(coder: NSCoder)์ ์ ์ฒด๋ฅผ ์ฐพ์์
NSCoder
UIView๋ฅผ ์์ํด ์ปค์คํ ํ๊ฒ ๋ทฐ๋ฅผ ๊ตฌ์ฑํ๊ฒ ๋๋ฉด ๋ ์ข ๋ฅ์ ์์ฑ์๋ฅผ ํ์ธํ ์ ์์ต๋๋ค. ์ฐ๋ฆฌ๊ฐ ์ผ๋ฐ์ ์ผ๋ก ์ฝ๋์์ ์ฌ์ฉํ๋ ์์ฑ์๋ frame์ ํ๋ผ๋ฏธํฐ๋ก ๋ฐ๋ ์์ฑ์์์ฃ . ๊ทธ๋ผ NSCoder๋ฅผ ์ฌ์ฉํ๋ ์์ฑ์๋ ์ธ์ ์ฐ์ผ๊น์?
์ด ๋ฌผ์์ ๋ต์ ํ๊ธฐ ์ํด์๋ NSCoder๊ฐ ๋ฌด์์ธ์ง๋ถํฐ ์์์ผ๊ฒ ์ฃ ? NSCoder์ ๊ณต์ ๋ฌธ์๋ฅผ ์ฐพ์๊ฐ๋ด ์๋ค.
์ผ๋จ ๊ณต์๋ฌธ์์์๋ NSCoder๋ฅผ ์ถ์ํด๋์ค๋ผ๊ณ ์๊ฐํ๊ณ ์์ด์. ์ด๋ค ๊ฐ์ฒด๊ฐ ๋ค๋ฅธ ๊ฐ์ฒด๋ฅผ ์์นด์ด๋น(archiving. ์์ถ์ด๋ผ๊ณ ๋ณผ ์ ์๊ฒ ์ฃ ?) ํ๊ฑฐ๋ ๋ถ๋ฐฐ(distribution)ํ ์ ์๋๋ก ํฉ๋๋ค. ์์ง ์ ๋ชจ๋ฅด๊ฒ ์ด์ ์ค๋ฒ๋ทฐ์์ ๋ ์์ธํ ๋ด์ฉ์ ์ฝ์ด๋ณผ๊ฒ์.
NSCoder declares the interface used by concrete subclasses to transfer objects and other values between memory and some other format. This capability provides the basis for archiving (storing objects and data on disk) and distribution (copying objects and data items between different processes or threads).
์ฌ๊ธฐ์ ์ค๋ช ์ด ๋ช ํํด์ง๋ค์. NSCoder๋ ์ธํฐํ์ด์ค์ด๊ณ ์ด๋ฅผ ๊ตฌํํ๋ ์๋ธํด๋์ค๋ ์ด๋ค ๊ฐ์ฒด๋ฅผ ๋ฉ๋ชจ๋ฆฌ์ ๋ค๋ฅธ ๋ฐ์ดํฐ ํฌ๋งท ์ฌ์ด์์ ์ ํ์ ๊ฐ๋ฅํ๊ฒ ํด์ค๋ค๊ณ ํฉ๋๋ค. ๊ทธ๋ฆฌ๊ณ ์ด๊ฑด ์์นด์ด๋น๊ณผ ๋์คํธ๋ฆฌ๋ทฐ์ ์ ํตํด ๊ฐ๋ฅํ์ฃ .
Archiving์ ๊ฐ์ฒด์ ๋ฐ์ดํฐ๋ฅผ ๋์คํฌ์ ์ ์ฅํ๋ ๊ฒ์ ์๋ฏธํ๊ณ Distribution์ ๊ฐ์ฒด์ ๋ฐ์ดํฐ๋ฅผ ์๋ก ๋ค๋ฅธ ํ๋ก์ธ์ค๋ ์ค๋ ๋์ฌ์ด์์ ๋ณต์ฌํ๋ ๊ฒ์ ์๋ฏธํ๋ค๊ณ ํ๋ค์.
The concrete subclasses provided by Foundation for these purposes are NSArchiver, NSUnarchiver, NSKeyedArchiver, NSKeyedUnarchiver, and NSPortCoder. Concrete subclasses of NSCoder are “coder classes”, and instances of these classes are “coder objects” (or simply “coders”). A coder that can only encode values is an “encoder”, and one that can only decode values is a “decoder”.
NSCoder๋ฅผ ๊ตฌํํ๋ ํด๋์ค๋ค์ Foundation ํ๋ ์์ํฌ์๋ ํฌํจ๋์ด ์๋๋ฐ์, NSArchiver, NSUnarchiver, NSKeyedArchiver, NSKeyedUnarchiver, NSPortCoder๊ฐ ์์ต๋๋ค. ์ด๋ฐ ํด๋์ค๋ค์ "Coder Classes"๋ผ๊ณ ํ๊ณ , ์ด ํด๋์ค๋ค์ ์ธ์คํด์ค๋ฅผ "Codier Objects(ํน์ Coders)"๋ผ๊ณ ํด์.
๊ทธ๋ฆฌ๊ณ ์ธ์ฝ๋ฉ์ ์ง์ํ๋ Coder๋ฅผ Encoder, ๋์ฝ๋ฉ์ ์ง์ํ๋ Coder๋ฅผ Decoder๋ผ๊ณ ํ์ฃ . ์ด๊ฑด ๋ค ์๋ ์ด์ผ๊ธฐ์ฃ ?
A coder stores object type information along with the data, so an object decoded from a stream of bytes is normally of the same class as the object that was originally encoded into the stream. An object can change its class when encoded, however; this is described in Archives and Serializations Programming Guide.
Coder๋ ๊ฐ์ฒด์ ํ์ ์ ๋ฐ์ดํฐ์ ํจ๊ป ์ ์ฅํด๋์๋ค๊ฐ ๋์ฝ๋ฉ์ด๋ ๋ ์ด ํ์ ์ ๊ทธ๋๋ก ์ฌ์ฉํฉ๋๋ค. ๊ทธ๋์ ์ผ๋ฐ์ ์ผ๋ก๋ ์ธ์ฝ๋ฉํ๋ ํ์ ์ด ๋์ฝ๋ฉ ์์ ๊ทธ๋๋ก ์ ์ฉ๋์ฃ .
์ด๋ ๊ฒ ๋ถ์น์ ํ๊ฒ ๋ฌธ์๋ฅผ ์ ์ด๋๊ณ ๊ฐ์ฅ ๋ฐ์์ ๋ ๊ฐ์ ๋ฌธ์๋ฅผ ์ฝ์ด๋ณด๋ผ๊ณ ํ๊ณ ์๋ค์.. NSCoder์ ์๋ธํด๋์ฑ์ ๋ํ ๋ด์ฉ๊ณผ Archiving๊ณผ Serialization์ ๋ํ ๊ฐ์ด๋๊ฐ ์์ต๋๋ค.
์ ํฌ๊ฐ ์ง์ NSCoder์ ์๋ธํด๋์ค๋ ๊ตฌํํ ์ผ์ด ๋ง์ด ์์ ๊ฒ ๊ฐ์์ ์์นด์ด๋น๊ณผ ์ง๋ ฌํ์ ๋ํ ๋ฌธ์๋ฅผ ์ฝ์ด๋ณผ๊ฒ์!
Archives and Serializations Programming Guide
Intro
์์นด์ด๋น๊ณผ ์ง๋ ฌํ๋ ๊ณ์ธต์ ์ด๋ฃจ๊ณ ์๋ ๋ฐ์ดํฐ๋ฅผ ๋ฐ์ดํธ ์คํธ๋ฆผ์ผ๋ก ๋ง๋ค ์ ์๋ ๋ฐฉ๋ฒ์ ๋๋ค. ๋ฐ์ดํธ ์คํธ๋ฆผ์ด ๋๋ฉด ํ์ผ์ ์ฐ์ฌ์ง ์๋ ์๊ณ , ๋คํธ์ํฌ๋ฅผ ํตํด ์ ์ก์ด ๋ ์๋ ์์ฃ . ๋ฐ์ดํธ ์คํธ๋ฆผ์ด ๋์ฝ๋ฉ๋๋ฉด ๊ธฐ์กด ๊ณ์ธต์ด ๊ทธ๋๋ก ์ฌ์์ฑ๋ฉ๋๋ค. ์ด๋ฅผ ์ํด์ ์์นด์ด๋น์ ๊ฐ์ฒด๋ค์ด ์๋ก ๊ฐ์ง๊ณ ์๋ ๊ด๊ณ๋ค๊ณผ ๊ฐ์ ๊ธฐ๋กํด์ฃผ๊ฒ ๋ฉ๋๋ค. ๊ทธ๋ฆฌ๊ณ ์ง๋ ฌํ๋ ๊ณ์ธต๊ฐ์ ํ๋กํผํฐ์ ๊ฐ๋ค์ด ๊ฐ์ง๋ ๊ฐ๋ค์ ๋ฆฌ์คํธ์ ํด๋๋ ๊ฒ ๋ฟ์ด์ฃ .
๋ฌด์จ ์๋ฆฐ์ง ์ ๋ชจ๋ฅด๊ฒ ์ฃ ? ์ผ๋จ ์ฌ๊ธฐ์ ํ๊ณ ์ ํ๋๊ฑด ์ด๋ค ๋ฐ์ดํฐ๋ฅผ ๋ฐ์ดํธ ์คํธ๋ฆผ์ผ๋ก ๋ฐ๊พธ๊ณ ์ํ๋ ๊ฒ์ด๊ณ , ์ด๋ ๋ฐ์ดํฐ๋ค์ด ๊ฐ์ง๊ณ ์๋ ๊ณ์ธต๊ด๊ณ๋ ํฌํจํ๊ณ ์ถ์๊ฑฐ์์. ๋ฐ์ดํธ ์คํธ๋ฆผ์ผ๋ก ๋ฐ๊พธ๋ ค๋ ์ด์ ๋ ํ์ผ์ ์์ฑํ๊ฑฐ๋, ๋คํธ์ํฌ๋ก ์ ์กํ๊ธฐ ์ํด์์ด๊ตฌ์. ์ฌ๊ธฐ์ ๋งํ๋ ๋ฐ์ดํธ ์คํธ๋ฆผ์ผ๋ก ๋ฐ๊พธ๋ ค๋ "๋ฐ์ดํฐ"๊ฐ ๋ฌด์์ธ์ง ์กฐ๊ธ ์ถ์์ ์ธ ๊ฒ ๊ฐ์๋ฐ ๋ฐ๋ก ๋ค์ ์น์ ์ ํตํด์ ํํธ๋ฅผ ์ป์ด๋ณด์๊ตฌ์!
Object Graphs
๊ฐ์ฒด ์ค์ฌ์ผ๋ก ๊ตฌ์ฑ๋์ด ์๋ ์ ํ๋ฆฌ์ผ์ด์
(์ฐ๋ฆฌ๊ฐ ๋ง๋๋ ๋ชจ๋ ์ฑ์ด ๋ค ๊ทธ๋ ๊ฒ ์ฃ ..!)์ ๊ฐ์ฒด๋ค์ด ๊ต์ฅํ ๋ณต์กํ๊ฒ ์ฝํ์์ต๋๋ค. ์๋ก ์ฐ๊ฒฐ๋์ด ์๊ธฐ๋ ํ๊ณ , ์ด๋ค ๊ฐ์ฒด๊ฐ ๋ค๋ฅธ ๊ฐ์ฒด๋ฅผ ์์ ํ๊ธฐ๋ ํ์ฃ . ์ด๋ ๊ฒ ๊ฐ์ฒด๋ค์ด ์ฝํ๊ณ ์ฝํ์๋ ๊ตฌ์กฐ(Web์ด๋ผ๊ณ ํํํ๋ค์)๋ฅผ ๊ฐ์ฒด ๊ทธ๋ํ(Object Graph)๋ผ๊ณ ํฉ๋๋ค.
๋ง์ฝ์ ์ด๋ฐ ์ ํ๋ฆฌ์ผ์ด์
์ ํน์ ์ ํ๋ฆฌ์ผ์ด์
์ ์ผ๋ถ๋ฅผ ํ์ผ๋ก ์ ์ฅํ๊ณ ์ถ๋ค๋ฉด ์ด๋ป๊ฒ ํด์ผํ ๊น์? ์๋๋ฉด ๋ค๋ฅธ ํ๋ก์ธ์ค์๊ฒ ์ ๋ฌํด์ ์ฌ์ฉํด์ผ ํ ๋๋์?
์ฐ๋ฆฌ๊ฐ ์ ์๊ณ ์๋ Nib์ด๋ plist ํ์ผ์ด ๊ฐ์ฒด ๊ทธ๋ํ๊ฐ ํ์ผ๋ก ์ ์ฅ๋ ์ข์ ์์์ธ๋ฐ์, Nib์ ์ฌ์ฉ์ ์ธํฐํ์ด์ค์ ๋ํ ๋ณต์กํ ๊ฐ์ฒด๋ค์ ๊ด๊ณ๋ฅผ ํ์ผ๋ก ํํํ๊ณ ์๊ณ , plist ํ์ผ๋ ์ด๋ค ๊ฐ์ฒด์ ๋ํ ๊ฐ์ ๋ชฉ๋ก๋ค์ ํ์ผ๋ก ์ ์ฅํ๊ณ ์์ต๋๋ค.
์ด๋ฐ ๊ฒ๋ค์ด ๊ฐ๋ฅํ ์ด์ ๊ฐ Archive์ Serialization์ด ์๊ธฐ ๋๋ฌธ์ด์ฃ .
์ค Nib์ ๋ํ ์ด์ผ๊ธฐ๊ฐ ๋์์ต๋๋ค..! ์ปค์คํ ๋ทฐ์ ์์ฑ์์ NSCoder๊ฐ ๋์จ๊ฒ๊ณผ ๋ญ๊ฐ ์ฐ๊ด์ด ์์ ๊ฒ ๊ฐ๋ค์..! ๊ณ์ ์ฝ์ด๋ณด๊ฒ ์ต๋๋ค!
Archives
์์นด์ด๋ธ๋ฅผ ์ฌ์ฉํ๋ฉด ๋ณต์กํ ๊ฐ์ฒด ๊ทธ๋ํ๋ฅผ ์ ์ฅํ ์ ์๊ฒ ํด์ค๋๋ค. ์์นด์ด๋ธ๋ ๊ฐ์ฒด ๊ทธ๋ํ ์์ ์๋ ๋ชจ๋ ๊ฐ์ฒด๋ค์ ์๋ณ์๋ฅผ ๋ณด์กดํ๊ณ ๊ทธ๋ํ ๋ด์ ๋ค๋ฅธ ๊ฐ์ฒด๋ค๊ณผ์ ๊ด๊ณ๋ ๋ณด์กดํฉ๋๋ค. ์์นด์ด๋น ๋ ๋ฐ์ดํฐ๋ฅผ ์ธ์์นด์ด๋นํ๋ฉด ๋ช๊ฐ์ง ์์ธ์ํฉ์ ์ ์ธํ๊ณ ๋ ์์นด์ด๋นํ๊ธฐ ์ ๊ฐ์ฒด ๊ทธ๋ํ๋ฅผ ์ ํํ๊ฒ ๋ณต์(rebuilt)ํฉ๋๋ค.
์์นด์ด๋ธ๋ฅผ ๋ฐ์ดํฐ ๋ชจ๋ธ์ ์ ์ฅ์๋จ์ผ๋ก ์ฌ์ฉํ๋ฉด ๋ฐ๋ก ์ ์ฅ์ ์ํ ํฌ๋งทํ ์ ํด์ฃผ์ง ์์๋ ๋ผ์ ์ด์ ์ด ์์ฃ . ์ธ์์นด์ด๋น์ ํ๋ฉด ๊ทธ๋๋ก ์ฌ์ฉํ ์๋ ์๊ตฌ์.
์์นด์ด๋น์ด ์ง์๋๋ ค๋ฉด ๊ฐ์ฒด๊ฐ ๋ฐ๋์ NSCoding ํ๋กํ ์ฝ์ ์ฑํํ๊ณ ์์ด์ผ ํฉ๋๋ค.
NSCoding ๋ฌธ์๋ฅผ ์ด์ด๋ณด๋ ์ด๋ ๊ฒ ๋ ๊ฐ์ ๋ฉ์๋๊ฐ Required๋ก ์๋ด๋์ด ์๋๋ฐ์, ํ๋๋ ๊ฐ์ฒด์ ๋ณ์๋ค์ ์์นด์ด๋นํ๋ ๋ฉ์๋์ด๊ณ , ๋ค๋ฅธ ํ๋๋ ์์นด์ด๋น๋ ๋ฐ์ดํฐ์์ ๋ณ์์ ๋ฐ์ดํฐ๋ค์ ๋ณต์ํ๋ ๋ฉ์๋์ ๋๋ค.
Foundation์ ํฌํจ๋ ๋ชจ๋ ๊ฐ ํ์ ๊ฐ์ฒด๋ค์ NSCoding์ ์ฑํํ๊ณ ์์ต๋๋ค. NSString, NSArray ๊ฐ์ ์น๊ตฌ๋ค์ด์. ์ด๋ฐ ํ์ ๋ค์ ๋ฐ๋ก ์ฝ๋๋ฅผ ์์ฑํด์ฃผ์ง ์์๋ ์์นด์ด๋นํ ์ ์์ต๋๋ค.
Serializations
Serialization์ ๊ฐ ๊ฐ์ฒด๋ค์ ๋ ๊ฐ๋จํ๊ฒ ์ ์ฅํ ์ ์๋ ๋ฐฉ๋ฒ์ด์์. ๋์ ๋๋ฆฌ, ๋ฐฐ์ด, ๋ฌธ์์ด, ๋ฐ์ด๋๋ฆฌ ๋ฐ์ดํฐ๋ค์ ๊ณ์ธต ๊ด๊ณ๋ก ์ ์ฅํ ์ ์์ฃ . ์์นด์ด๋ธ์๋ ๋ค๋ฅด๊ฒ ์ง๋ ฌํ๋ ๊ฐ์ฒด๊ฐ ๊ฐ์ง๊ณ ์๋ ๊ฐ๊ณผ ๊ณ์ธต ์์ ์์น๋ง ํฌํจํ๊ณ ์์ด์. ๊ทธ๋์ ๋ง์ฝ ์ด๋ค ๊ฐ์ฒด๊ฐ ๋ค๋ฅธ ๋ง์ ๊ฐ์ฒด๋ค์๊ฒ ์ฐธ์กฐ๋๊ณ ์๋ค๋ฉด, ์ง๋ ฌํ๋ ํ์ผ์๋ ๊ฐ๊ฐ ํ๋์ฉ 1๋1 ๋งค์นญ์ด ๋๋ ๊ด๊ณ๋ก ํํ๋ ์๋ ์์ต๋๋ค.
plist๊ฐ ๋ํ์ ์ธ ์์ธ๋ฐ์,
์ด๋ ๊ฒ ๊ฐ์ฒด๋ค์ ๋ณต์กํ ๊ด๊ณ๋ฅผ ํํํ์ง๋ ๋ชปํ์ง๋ง, ๊ฐ์ฒด๋ค๊ฐ์ ๊ณ์ธต๊ด๊ณ์ ๊ฐ ๊ฐ์ฒด๊ฐ ๋ด๊ณ ์๋ ๊ฐ์ ํํํ ์ ์์ฃ .
๋นฝ ํฌ ๋ ํ
๋ค์ ์ด ์ฝ๋๋ก ๋์์๋ณผ๊ฒ์. required init?(coder: NSCoder)๋ ์ด๋ค ์ผ์ ํ ๊น์?
์๊น ์์นด์ด๋น๊ณผ ๋์คํธ๋ฆฌ๋ทฐ์ ์ด ๊ฐ๋ฅํ NSCoder๊ฐ์ฒด์ ์ธ์คํด์ค๊ฐ Coder์์ฃ ? ๊ทธ๋ผ ์ด ๋ฉ์๋์์๋ ์ด๋ค ๊ฐ์ฒด๋ฅผ ์์นด์ด๋นํ๊ฑฐ๋ ์ธ์์นด์ด๋นํ๊ฒ ๋ค์.
๊ทธ๋ผ ์ ๋ฉ์๋๋ ๋ฌธ์๋ฅผ ์ฐพ์๋ด์ผ๊ฒ ์ฃ ?
๋ ์ ๋.. ์ค๋ช ์ด ์์ต๋๋คใ ใ ใ ใ ใ
๋คํ์ค๋ฝ๊ฒ๋ UIView ๋ฌธ์์๋ ์ ํ์๋ค์.. ์คํ ๋ฆฌ๋ณด๋๋ nib ํ์ผ์ ํตํด ๋ทฐ๋ฅผ ๋ก๋ํ๋ฉด์ ์ปค์คํ ํ๊ฒ ์ด๊ธฐํ๋ฅผ ํด์ฃผ๊ณ ์ถ๋ค๋ฉด ์ด ๋ฉ์๋๋ฅผ ์ฌ์ฉํ๋ผ๊ณ ํ๋ค์.
์คํ ๋ฆฌ๋ณด๋์ nib์ผ๋ก ๋ง๋ค์ด์ง ๋ทฐ๊ฐ ์ด๋ป๊ธธ๋ ์ด๋ด๊น์??
์ด๋ฒ์ ์ฌ๊ธฐ์ nib์ ๋ฌธ์๋ฅผ ์ด์ด๋ดค์ต๋๋ค..
์คํค์คํค~ ์ค๋ง๋ฆฌ๋ฅผ ์ฐพ์๋ค์! Nib ํ์ผ์ ์ธํฐํ์ด์ค ๋น๋ ๋ฌธ์๋ผ๊ณ ํด์. ์ด ๋ฌธ์๊ฐ ์์ ๋๊ณ ํ์ผ์ด ์ ์ฅ๋ ๋ ๊ฐ์ฒด๊ทธ๋ํ๊ฐ ์์ฑ๋์ด์ ์ ์ฅ๋ฉ๋๋ค. ๊ทธ๋ฆฌ๊ณ ๊ทธ ํ์ผ์ ๋ก๋ํ๋ฉด ๊ฐ์ฒด๊ทธ๋ํ๊ฐ ์ธ์์นด์ด๋น ๋๋ ๊ฒ์ด์ฃ .
๋ ์ฝ์ด๋ณด๋ ์คํ ๋ฆฌ๋ณด๋๋ก ์์ฑํ๋ ๋ทฐ๋ค๋ ๋ชจ๋ Nib์ผ๋ก ํํ๋๋ค๊ณ ํฉ๋๋ค.
์ ๋ฆฌํ๋ฉด ์คํ ๋ฆฌ๋ณด๋๋ xib๋ ๊ฒฐ๊ตญ ๊ฐ์ฒด ๊ทธ๋ํ๊ฐ ์์นด์ด๋น๋ ํ์ผ์ด๊ณ , ์ด ํ์ผ์ ๋ก๋ํด์ฃผ์ด์ผ ๋ทฐ๋ฅผ ๋ณด์ฌ์ค ์ ์๋๊ฑฐ์ฃ . ๊ทธ๋ฆฌ๊ณ ์ด๋ ๋ถ๋ฆฌ๋ ์์ฑ์๊ฐ required init?(coder: NSCoder) ์ด์๋ ๊ฒ์ด๋ค์..!
์ ๊น.. ๊ทธ๋ผ awakeFromNib์ ๋ญ๋ฐ..?
๊ฐ์๊ธฐ ๋๋ ์๋ฌธ.. ๊ทธ๋ผ awakeFromNib์ ์ ๋ถ๋ฆฌ๋๊ฑธ๊น์??
์ด๋ฒ์๋ ์ญ์ ๋ฌธ์๊ฐ ์์๋ค์.
์ ๋ฆฌํด๋ณด๋ฉด NSCoding ์ ์ฑํํ๋ ๊ฐ์ฒด๊ฐ ์ธ์์นด์ด๋น๋ ์ดํ์ ์ด๊ธฐํ ๋ ์ดํ์ ๋ถ๋ฆฌ๋ ๋ฉ์๋๊ฐ awakeFromNib์ด๋ผ๊ณ ํด์. ๊ฐ์ฒด ๊ทธ๋ํ๋ฅผ ์ด๋ฃจ๋ ๋ชจ๋ ๊ฐ์ฒด๊ฐ ์ธ์คํด์คํ ๋๊ณ ์ด๊ธฐํ๋๋ฉด ๊ฐ์ฒด๊ฐ ๊ฐ์ง๊ณ ์๋ outlet์ด๋ action์ด ์ฐ๊ฒฐ๋ฉ๋๋ค. ๊ทธ ์ดํ์ ๋ถ๋ฆฌ๋ ๋ฉ์๋๊ฐ awakeFromNib์ ๋๋ค.
๊ฐ์ฒด ๊ทธ๋ํ์ ์๋ ๊ฐ์ฒด๋ค์ด ์ธ์์นด์ด๋น ๋๊ณ ์์๋๋ ์์๊ฐ ์์นด์ด๋น๋ ์์์ ๊ฐ๋ค๋ ๊ฒ์ด ๋ณด์ฅ๋์ง ์์ต๋๋ค. ๊ทธ๋์ init ๋ฉ์๋์์ ๋ค๋ฅธ ๊ฐ์ฒด์๊ฒ ๋ฉ์์ง๋ฅผ ๋ณด๋ด๋ ํ๋์ ์ ๋ ํ๋ฉด ์๋๋ค๊ณ ํด์. awakeFromNib์ ๋ชจ๋ ๊ฐ์ฒด๊ฐ ์ด๊ธฐํ๋ ์ดํ์ ํธ์ถ๋๊ธฐ ๋๋ฌธ์ ์์ ํ๋ค๊ณ ํด์.
๋ง๋ฌด๋ฆฌ
์ด๋ ๊ฒ ํด์ NSCoder์ ๊ฐ์ฒด๊ทธ๋ํ์ ๋ํด ๊ณต๋ถํด๋ณด์์ต๋๋ค! ์์ ์ ํ ๋ฒ ๋ค์๋ ๋ด์ฉ์ธ๋ฐ ๋ค ์๊ณ ์๋ค๊ฐ ์ ์ฒด์ ์ผ๋ก ๋ฌธ์๋ฅผ ๋ค์ ๋ณด๋ ํ์คํ ์ ๋ฆฌ๊ฐ ๋๋ ๊ฒ ๊ฐ์์! ์ค๋๋ ์ฝ์ด์ฃผ์ ์ ๊ฐ์ฌํฉ๋๋ค..!
๋ฌธ์์ ๋ง์ด ์์งํ๋ค๋ณด๋ ์๋ชป ํด์ํ๊ฑฐ๋ ์ดํดํ ๋ด์ฉ์ด ์์ ์๋ ์์ด์.. ์ ๊ธ์ ๋๋ฌด ๋งน์ ํ์ง ๋ง์์ฃผ์๊ณ ํ๋ฆฐ ๋ถ๋ถ์ด ์๋ค๋ฉด ์๋ ค์ฃผ์ธ์!
๋ํผ๋ฐ์ค
https://developer.apple.com/documentation/foundation/nscoding
https://developer.apple.com/documentation/foundation/nscoder
https://developer.apple.com/documentation/uikit/uiview/
https://developer.apple.com/documentation/objectivec/nsobject/1402907-awakefromnib