2016-09-19 1 views
0
@interface DZActionView(){ 
    NSString* _name; 
} 

@interface DZActionView() 
    @property(strong, nonatomic)NSString* name; 
@end 

다른 점은 무엇입니까? @property를 사용하는 경우에만 알 수 있습니다. getter/setter 메서드와 _name 속성을 생성합니다.Objective-C에서 속성을 만드는 두 가지 방법의 차이점은 무엇입니까

@interface DZActionView(){ 
    NSString* _name; 
} 

이 속성을 만드는 첫 번째 방법이, 그리고

@interface DZActionView() 
    @property(strong, nonatomic)NSString* name; 
@end 

는 어떻게 목표 - C를 오해하고, 두 번째 방법이 :

+2

첫 번째 속성은 속성이 아니며 인스턴스 변수 일뿐입니다. 두 번째 속성입니다. – Paulw11

답변

2

이를 위해 의미하는 경우 속성을 사용합니다.

첫 번째 방법은 속성이 아니며 인스턴스 변수 일뿐입니다. 다른 객체는 액세스 할 수 없습니다.

두 번째 방법은 실제로 속성을 만듭니다. 이전 버전의 Objective-C에서는 속성에 대한 백업 인스턴스 변수를 만들어야했습니다. 어떤 변수가 포함되어 있습니까? _name 변수입니다. 이것은 명시 적으로 추가해야하는 작업을 수행하지 않는 한 대부분 자동으로 수행됩니다. 그런 다음

- (NSString*)name { 
    return _name; 
} 
- (void)setName:(NSString*)name { 
    _name = name 
} 

이 명시 적으로 언급 한 _name 인스턴스 변수를 참조하고, 후원 변수로 사용됩니다

당신은 당신의 자신의 gettersetter 방법 (이 유사)를 포함합니다.

관련 문제