Xcode์์ obj-C ํ๋ก์ ํธ๊ฐ์ ์ฐ๊ฒฐ์ฑ๊ณผ ์ฌ ๋ค์ ์จ๊ฒจ์ง ์ฝ๋๋ฅผ ์ดํดํ๋ ๊ฒ์ด ์ค์ํ๋ค. ํด๋์ค์ public์ด๋ privateํ ํํธ๋ฅผ ๋๋๋๋ฐ ์ฌ์ฉ์ด ๋จ. .h๋ ํค๋ ํ์ผ๋ก ๋ง์น API์ฒ๋ผ ํด๋์ค์ public ์ ์ธ์ ํ๋ ํ์ผ์ด๊ณ , .mํ์ผ์ ๋น๊ณต๊ฐ๋๋ ๊ตฌํ์ ํจ.
๋ค๋ฅธ ํ์ผ์์ ํจ์๋ฅผ ํธ์ถํ๋ ค๊ณ ํ ๋ ์ฐธ์กฐ๋ฅผ ์ํด .h ํ์ผ์ import ํด์์ผ ํ๋ค.
#import <Foundation/Foundation.h>
.h ํ์ผ์์ public @property๋ฅผ ํด๋์ค์ ์ ์ธํ ์ ์์.
@property (strong, nonatomic) NSString *something;
์ด @property๋ NSString ํด๋์ค ์ค๋ธ์ ํธ์ ํฌ์ธํฐ. ๋ชจ๋ ์ค๋ธ์ ํธ๋ ํ์ ์์ผ๋ฏ๋ก ์ด ์์ด์ผํจ. ๋ณ๊ฐ๋ก ์ด ์ ๋ป์ ์ค๋ธ์ ํธ ํฌ์ธํธ๋ฅผ ํ๋กํผํฐ๊ฐ nil๋ก ์ค์ ๋๊ธฐ ์ ๊น์ง ๋ฉ๋ชจ๋ฆฌ์ ์ ์งํ๋ผ๋ ๋ป. nonatomic์ ์ด ํ๋กํผํฐ์ ์ ๊ทผํ๋ ๊ฒ์ด ์ค๋ ๋ ์ธ์ดํํ์ง ์๋ค๋ ๊ฒ. nonatomic์ด ์๋๋ฉด ์ปดํ์ผ๋ฌ๊ฐ ์ฝ๋ ์ ๊ธ์ ๋ง๋ค ๊ฒ.
.m ํ์ผ์ ์ด ํ๋กํผํฐ์ ๊ฒํฐ์ ์ธํฐ ๋ฉ์๋๊ฐ ์ฌ ๋ค์์ ์๋์ ์ผ๋ก ์์ฑํด์ @property์ ์ธ์คํด์ค๋ฅผ ์ ๊ทผ๊ฐ๋ฅํ๊ฒ ๋ง๋ฌ.
@synthsize something = _somthing;
- (NSString *) something
{
return _something;
}
- (void)setSomething:(NSString *)something
{
_something = something;
}
๊ธฐ๋ณธ์ ์ผ๋ก ์ง์(backing) ๋ณ์ ์ด๋ฆ์ ํ๋กํผํฐ ์ด๋ฆ๊ณผ ๋์ผํ๊ณ ์์ ์ธ๋์ค์ฝ์ด(_)๋ฅผ ๋ถ์ธ ํํ. ๋ฉ์๋๋ฅผ ์ค๋ฒ๋ผ์ด๋ํด์ ๋ค๋ฅธ ๊ฑธ ํ๋ ๊ฒ ์๋๋ผ๋ฉด ์ ์ฝ๋๋ฅผ ์์ฑํ ํ์๋ ์์.
์๋ก์ด ๋ฉ์๋๋ฅผ ์์ฑํ ๋๋ .h ํ์ผ ์์ ์ ์ธ์ ๋์ด์ผํจ.
- (int)newMethod:(ArgType *)arg;
๊ทธ๋ฆฌ๊ณ ์ค์ ์์ธํ ๋ถ๋ถ์ .m ํ์ผ์ ์์ฑ.
- (int)newMethod:(ArgType *)arg
{
int num = 0;
# something in the method...
return num;
}
๋น๊ณต๊ฐ๋ก ์ ์ธํ ๋ .m ํ์ผ ์์ ์ด๋ฐ ์์ผ๋ก ์์ฑ.
@interface Something()
#private declarations....
@end
๋ค๋ฅธ ์ฝ๋๋ฅผ ์ฒ์์ผ๋ก ์ฝ์ ๋ .h ํ์ผ์ ๋ณด๊ณ ํ๋ก์ ํธ์ ๊ฐ์๋ฅผ ๋ณผ ์ ์์. ์์ธํ๊ฒ ๋ณด๋ ค๋ฉด .m ํ์ผ.
๋ณธ ๊ธ์ ์๋ ๊ธ์ ๋ฒ์ญ, ์์ฝ ๊ธ์ ๋๋ค.
* ๊ฐ์ธ ๊ฐ๋ฐ ๋ธ๋ก๊ทธ์ ์ฌ๋ฆฐ ๋ด์ฉ์ด๊ธฐ๋ ํฉ๋๋ค.
์ค๋๋ ์ฝ์ด์ฃผ์ ์ ๊ฐ์ฌํฉ๋๋ค.
๊ถ๊ธํ๊ฑฐ๋ ๋๋๊ณ ์ถ์ ์๊ธฐ๊ฐ ์์ผ์๋ฉด ๋๊ธ๋ก ์๋ ค์ฃผ์ธ์!
์ฌ๋ฐ๊ฒ ์ฝ์ผ์ จ๋ค๋ฉด ๊ณต๊ฐ๊ณผ ๊ตฌ๋ ์ ํฐ ํ์ด ๋ฉ๋๋ค.
ํญ์ ๊ฐ์ฌํฉ๋๋ค.
๋๊ธ