我想知道在cocoa中聲明私有實例變量的建議是什麼。這個問題是在iPhone上開發應用程序的上下文中。在cocoa中聲明私有變量的最佳方法
我知道的至少三種方式宣告私有變量:
聲明它們在.h文件與修改@private接口:
@interface MyClass : NSObject { @private NSObject * myPrivateVar; }
聲明他們m文件的實現部分:
@implementation MyClass NSObject * myPrivateVar;
De克萊爾在M檔的接口屬性(甚至沒有聲明變量本身):
@interface MyClass() @property (nonatomic, retain) NSString* myPrivateVar; @end @implementation @synthesize myPrivateVar;
到目前爲止,我已經廣泛使用2,但最近開始意識到這可能是危險的,由於缺乏的垃圾收集。是否有使用該方法完全可以接受的情況?
3更合適嗎?答案是否取決於對象類型(例如mutable/immutable)?
參考材料的指針討論了使用/不使用屬性的權衡也值得讚賞。
iPhone上沒有垃圾回收。 – ughoavgfhw 2011-04-11 04:17:59
既然你寫了這個,也可以在實現中聲明一個iVar,如下所示: '@implementation MyClass { NSObject * myPrivateVar; }' – mahboudz 2014-09-15 22:16:47