以下是我以前编写自定义保留设置器的方法:
- (void)setMyObject:(MyObject *)anObject
{
[_myObject release], _myObject = nil;
_myObject = [anObject retain];
// Other stuff
}
当属性设置为strong时,如何使用ARC实现此目的。 如何确保变量具有强指针?
答案 0 :(得分:66)
strong
在ivar级别自行处理,所以你只能做
- (void)setMyObject:(MyObject *)anObject
{
_myObject = anObject;
// other stuff
}
就是这样。
注意:如果你这样做没有自动属性,那么ivar就是
MyObject *_myObject;
然后ARC会为您处理保留和发布(谢天谢地)。 __strong
默认为限定符。
答案 1 :(得分:5)
总结答案
.h文件
//If you are doing this without the ivar
@property (nonatomic, strong) MyObject *myObject;
.m文件
@synthesize myObject = _myObject;
- (void)setMyObject:(MyObject *)anObject
{
if (_myObject != anObject)
{
_myObject = nil;
_myObject = anObject;
}
// other stuff
}