2011-09-02 37 views
-1

可能重複:
Properties and Instance Variables in Objective-C 2.0
Objective-C Properties with or without instance variablesObjective C中的類聲明有什麼區別?

是什麼代碼下面兩段之間的區別?兩者都是可編譯的,我不知道哪一個是「正確的」。

@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的源文件,其中包含實現。這個實現將包含@synthesize指令,爲您生成getter和setter方法。

欲瞭解更多信息,你應該閱讀Apple Guide to Objective-C。還請查看http://www.raywenderlich.com

+0

感謝@progrmr它更清晰。 – Kheldar

0

Objective-C運行時的當前版本不要求您爲屬性指定實例變量。 @synthesize會自動爲你添加它們。

相關問題