2011-03-29 3 views
2

개인 인스턴스 변수를 정의하는 데 어떤 차이가 있습니까?Objective-C 개인 인스턴스 변수 정의

1) 헤더 파일에서

@interface MyViewController : UIViewController { 
    @private 
    NSString *fooString; 
} 

2) 두 번째 방법은 구현을 정의하는 것입니다 :

@implementation MyViewController 
NSString *fooString; 

차이점은 무엇입니까 내가 거기 두 possibilties가 알고있는 것처럼? 건배! 이 전역 변수, 그래서 당신의 두 가지 경우

답변

7

는 인스턴스 변수가 아닙니다.

둘째는 모든 MyViewController가 공유하는 fooString입니다.

1

첫 번째 사용자가 만든 MyViewController마다 고유 fooString이다 완전히 다른 - 두번째 경우 fooString에서

4

첫 번째 방법은 전용 인스턴스 변수를 정의합니다. MyViewController 클래스의 각 객체에는 자체 fooString이 있습니다.

두 번째 방법은 전역 변수를 정의합니다. fooString의 인스턴스는 하나 뿐이며 에 표시되며 소스 파일의 경우 다음과 같이 선언됩니다.

extern NSString *fooString;