synthesize 팁
외부에서 접근하는 프로퍼티 이름과 내부의 변수 이름을 항상 일치시켜야 할까 ? 그렇지는 않다. 많은 개발자가 다음과 같은 기법을 사용한다.
01: // 헤더
02: @interface AccessorTest2 : NSObject {
03: BOOL _enable;
04: }
05: @property (readwrite,assign) BOOL enable;
06: @end
07:
08: // 구현
09: @implementation AccessorTest2
10:
11: @synthesize enable = _enable;
12:
13: @end
즉 실제 내부 변수를 언더바(_) 문자로 시작하게 선언한다. 그리고 외부에서 접근할 때는 언더바를 제거한 문자로 접근하도록 하는 것이다. 이렇게 해서 내부에서 접근할 때와 외부에서 접근할 때의 차이를 쉽게 구분하도록 한다.
self.enable = YES; // 접근자를 통한 설정
_enable = YES; // 객체 내부에서 접근
위 코드와 같이 접근자로 접근하는 것과 내부에서 접근하는 경우를 확연히 구분할 수 있다. 이 때 synthesize 에 = 가 사용된 것은 enable 이라는 프로퍼티가 _enable 이라는 멤버 변수를 사용한다는 것을 알리기 위한것이다.
출처 : http://blog.messfilm.com/?p=84
외부와 내부에서 접근할때를 구분은 왜 하는것일까? 사실 c#때도 private와 public를 사용해서 좀더 캡슐화에 가깝게 객체지향적으로 짠다.
이것도 그런것일까... 근데 이건 public은 원래 있는것이고 추가적으로 private를 더 만드는것이라 좀 애매하다. 아직 갈길이 멀구나.
'iPhone App' 카테고리의 다른 글
[iphone] Lost Focus 하는법, UIView에서 Touch event 받는법 (0) | 2011.09.05 |
---|---|
[iphone] 경고창 띄우는 법 (0) | 2011.08.29 |
[iphone] TextField Foucs 가게하기 (0) | 2011.08.26 |
[iphone] 처음에 Logo Image 나오게하기 (Splash Image) (0) | 2011.08.24 |
[iphone] TableView 아래로 스크롤시 내용이 하단에 계속 추가 되는 기능 만들기 (0) | 2011.08.19 |