2014-08-28 14 views
0

클래스의 인스턴스화 된 인스턴스에서 사용할 수 있지만 해당 클래스의 범위 외부에서 사용할 수없는 변수는 objective-c에서 선언하고 싶습니다. 나는 아래로 내 코드를하고있다 :모범 사례 클래스 수준 변수

@interface myClass 
{ 
NSString* classVariable; 
} 
@end 

@implementation myClass 

-(void)method 
{ 
NSLog(@"%@",classVariable); 
} 

@end 

이 겉으로 코드에서 작동하지만, 내가 목표 - C에 새로운 오전 (자바와 C#에서 오는). 이게 최선의 관행인가? 함정이 있습니까?

미리 감사드립니다. 속성를 사용하는 당신에게, 그러나 때때로 당신은 그냥 원할 것입니다

+0

대신 속성을 사용하면 좋습니다! – CrimsonChris

+0

@CrimsonChris 고마워요. 현재 사용중인 방법에 함정이 있습니까? 저는 속성이 클래스 외부에서 볼 수 있다는 것을 알고 있습니다. 나는 그것을 피하고 싶습니다. – steventnorris

+0

헤더 파일에 입력하면 클래스 외부에서만 볼 수 있습니다. 클래스 구현 바로 위에 _class category_에 넣으십시오. – CrimsonChris

답변

1

많은 인스턴스 (단지 실제 액세스 제어 할 수없는 목표 - C에서 접근 열심히 의미) 비공개 변수. 이것이 사실이라면 Objective-C 언어는 사용자의 필요를 충족시키기 위해 너무 오래 전에 구현에서 인스턴스 변수를 선언 할 수있는 능력을 얻었습니다. 코드를 다음으로 변경하십시오.

@interface myClass 
@end 

@implementation myClass 
{ 
    NSString* classVariable; 
} 

-(void)method 
{ 
    NSLog(@"%@",classVariable); 
} 

@end 

이렇게 선언 된 인스턴스 변수는 Objective-C에서 허용하는 것처럼 숨겨져 있습니다.