2011-09-02 6 views
-1

가능한 중복 :
Properties and Instance Variables in Objective-C 2.0
Objective-C Properties with or without instance variables목표 C의 클래스 선언 차이점은 무엇입니까?

코드의 다음과 같은 두 가지의 차이점은 무엇입니까? 둘 다 compilable이며 나는 "올바른"모르겠어요.

@interface JTPlayer : NSObject { 

    NSString *userId; 
    NSString *name; 
    BOOL inBattle; 
} 

@property (nonatomic, copy) NSString *userId; 
@property (nonatomic, copy) NSString *name; 
@property (nonatomic, assign) BOOL inBattle; 

@end 

@interface JTPlayer : NSObject 

@property (nonatomic, copy) NSString *userId; 
@property (nonatomic, copy) NSString *name; 
@property (nonatomic, assign) BOOL inBattle; 

@end 
+0

저주, 나는 대답에 입력 한 후 중복입니다났습니다. @Sergio, 때로는 약간의 노력을하십시오 : 답변을 수락하고 검색 도구를 사용하십시오 ... – Kheldar

답변

1

하나는 선언 속성의 이전 버전입니다. 보시다시피 변수를 손으로 선언 한 다음 해당 변수에 적용된 속성을 선언해야했습니다.

두 번째 버전은 나머지를 관리하고 변수 선언 및 속성과의 대응을 관리하는 최신 버전입니다.

두 블록 모두 정확하지만 첫 번째 블록은 더 많은 키 입력이 필요합니다. 이 코드 (두 버전 모두)는 구현을 포함하는 .m 확장명을 가진 소스 파일과 함께 헤더 파일에 속해야합니다. 이 구현에는 getter 및 setter 메서드를 생성하는 @ synthesesize 지침이 포함됩니다.

자세한 내용은 Apple Guide to Objective-C을 읽어야합니다. http://www.raywenderlich.com도 확인하십시오.

+0

감사합니다 @progrmr 그렇게 훨씬 더 명확합니다. – Kheldar

0

현재 Objective-C 런타임 버전에서는 속성에 인스턴스 변수를 지정할 필요가 없습니다. @synthesize가 자동으로 추가합니다.