这是否有必要在分配之前检查对象为零?

时间:2010-11-01 16:13:15

标签: objective-c programming-languages

目标c问题,我有一个指针NSObject * abc; 我没有在init方法中分配和初始化它。 那么,我是否需要在方法中执行此操作?

-(void)someThingElse{
 if(abc != nil){
    [abc release];
    abc = nil;
 }

 abc = [[NSObject alloc] init];

}

我的流量对吗?谢谢。

1 个答案:

答案 0 :(得分:6)

您的代码可以简化为:

[abc release];
abc = [[NSObject alloc] init];

,因为

  • -release发送nil条消息不会执行任何操作,因此无需检查nil

  • 如果您准备分配abc,则无需将nil设置为abc

您也可以考虑将retain声明为具有self.abc = [[[NSObject alloc] init] autorelease]; 语义的objective-c属性,在这种情况下,您只需执行以下操作:

dealloc

在任何一种情况下,您的[abc release]方法还应包含{{1}},当然