我经常看到以下代码片段:
在头部:
SomeClass *bla;
@property(nonatomic,retain) SomeClass *bla;
在实现文件中:
@synthesize bla;
然后
self.bla = [[SomeClass alloc] init];
我认为这个赋值操作会使得'bla'的保留计数增加两次;一次是通过alloc/init调用,另一次是通过我们要求的属性合成器setter方法中的retain调用。
因此,我通常会这样声明我的属性:
在头文件中:
SomeClass *_bla; // note the underscore
@property(nonatomic,retain) SomeClass *bla;
在实现文件中:
@synthesize bla = _bla;
然后
_bla = [[SomeClass alloc] init];
如果我的初始假设是正确的——我很想知道是否有“正确”的方法来完成这个操作,即属性的声明、初始化和内存管理?