iphone ARC - 如何将对象设置为nil?

时间:2012-01-25 14:47:30

标签: objective-c ios automatic-ref-counting

我有一些逻辑可以测试对象是否为零,如何将其设置为nil?

像:

// in some method
if (true){
 [self myObj] = [[myObj alloc]init];
} else{
 [self myObject] = nil; //??? How to do this with Automatic Ref. Counting
}

// elsewhere
if([self myObj]){

}

4 个答案:

答案 0 :(得分:4)

您的代码不正确。

您需要使用属性并为其指定值,例如[self setMyObject:nil];[self setMyObj:[[myObj alloc] init]];

答案 1 :(得分:3)

你的代码错了。尝试:

self.myObject=nil;
//or
[self setMyObject:nil];

另外,请确保myObject是您班级中的属性,否则使用self将无效。

答案 2 :(得分:2)

[self myObj]不可分配,因为它不是左值。要解决这个问题,要么引用基础变量,例如: self->myObj,如果您正在使用属性,请使用[self setMyObj:]

答案 3 :(得分:1)

您正在使用getter作为setter。那不行。它应该是

[self setMyObj:[myObj alloc]init]]; 

并且

[self setMyObj:nil];

假设您已实施了setter。在ARC下,如果你只是访问一个ivar,你真的不需要 - 你可以直接访问它,并且将为你完成引用计数:

myObj = [MyObj alloc] init];

并且

myObj = nil;

将为您设置和删除所有内容。