2014-07-02 57 views
0

如果我想在viewcontroller中使用單個對象,什麼是正確的聲明方法? 使用@property我我.m文件在標頭中使用@property或@interface

@property (nonatomic, strong) UITextView *resolutionText; 
@property (nonatomic, strong) AWLResolutionView *myView; 

或在我的.h文件

@interface 
{ 
@private 
    UITextView *_resolutionText; 
    AWLResolutionView *myView; 
} 
+0

第一個(在.m文件中聲明它)。後者是沒有匿名類別時的舊版本:) – HAS

+1

另請注意** Objc中沒有任何**是真的**私有。 – HAS

+0

這可能是有用的.. http://stackoverflow.com/questions/4903651/is-there-any-reason-to-declare-ivars-if-youre-using-properties-exclusively-in-o – Amar

回答

0

對於清潔編碼的緣故申報他們,我寧願在無名類別創建內部性質.m文件。

但是,使用@property會自動爲您創建一個與您的屬性名稱相同的實例變量,該屬性名前面有下劃線(_),可以從.m文件中訪問該實例變量。這就是所謂的合成。 Y 您也可以使用@synthesize手動合成屬性到自定義實例變量。

Apple提供了一些清晰的指令,說明如何在其developer library中編寫乾淨的代碼。

+0

只需添加。自動合成有一些例外,如果它不起作用。例如在'NSManagedObject'子類中。或者,如果你重寫屬性的getter和setter方法。 – Fogmeister

0

聲明私有變量的最佳方式應該在.m文件的擴展名中聲明爲@property。如果您在.m文件中看到默認情況下存在一個名爲@interface的擴展類,則在擴展類中聲明爲相同。也不需要編寫額外的代碼在.h文件中聲明私有變量。

所以你的第一種方法是最好的。

相關問題