2013-07-10 4 views
3

내가 Objectice-C를 배우고 그리고 난 내가 두 가지 방법설정 값 - 인스턴스 변수

@interface Foo : NSObject 
    @property int x; 
    -(void)print; 
@end 

@implementation Foo 

-(void)print 
{ 
    [self setX:10] // first way 
    x = 10; // second way 
} 
@end 

더 명확 모양의 나는 개인적으로 첫 번째 방법을 선호에 instace 변수의 값을 설정할 수 있습니다 것을 알 수 있습니다. 내 프로젝트에서 첫 번째 방법을 사용해도 괜찮습니까?

+0

'init'과'dealloc'의 외부에서 setter를 사용하십시오. 이 두 가지 방법으로 ivar를 직접 사용하십시오. – bbum

답변

1

두 가지 방법으로 변수에 액세스 할 수 있습니다

자기와 세터 또는 게터를 사용. :

self.x = 10; 
[self setX:10] 

두 가지 모두 동등하지만 Apple에서는 자동으로 설정기를 사용할 것을 권장합니다.

또는 ivar에 직접 액세스하십시오. ivar 이름은 당신이 그것을 어떻게 합성하는지에 달려 있습니다. (

_x = 10; 

당신이 예에서, 두 번째 방법은 직접 바르에 액세스하고, 첫 번째 방법은 세터를 사용하는 것입니다 : 기본 합성을 사용 (또는 당신이 그것을 스스로 합성하지 않는) 경우이 같다 self = 10과 동일),

첫 번째 방법은 메모리 문제를 해결하고 이전 값을 릴리스하고 원하는 경우 스레드에서 보호하기 때문에 좋습니다 (셀프 또는 세터 사용). 자기 자신을 편안하게 사용할 수 있습니다. 세터를 부르는 것보다.

초기화 방법에있는 경우에만 ivar를 사용하고, 나머지는 설정자를 사용하십시오.