Objective c 在分配对象之前是否需要检查对象nil?

Objective c 在分配对象之前是否需要检查对象nil?,objective-c,programming-languages,Objective C,Programming Languages,目标c问题,我有一个指针NSObject*abc; 我没有在init方法中分配和初始化它。 那么,我需要在方法中这样做吗 -(void)someThingElse{ if(abc != nil){ [abc release]; abc = nil; } abc = [[NSObject alloc] init]; } 我的流程正确吗?多谢各位 您的代码可以简化为: [abc release]; abc = [[NSObject alloc] init]; 因为 将

目标c问题,我有一个指针NSObject*abc; 我没有在init方法中分配和初始化它。 那么,我需要在方法中这样做吗

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

 abc = [[NSObject alloc] init];

}

我的流程正确吗?多谢各位

您的代码可以简化为:

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

  • -release
    消息发送到
    nil
    没有任何作用,因此无需检查
    nil

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

您也可以考虑将<代码> ABC <代码>作为Objy-C属性,使用<代码>留存< /代码>语义,在这种情况下,您所要做的是:

self.abc = [[[NSObject alloc] init] autorelease];

在这两种情况下,您的
dealloc
方法还应包括
[abc release]
,当然

您的代码可以简化为:

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

  • -release
    消息发送到
    nil
    没有任何作用,因此无需检查
    nil

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

您也可以考虑将<代码> ABC <代码>作为Objy-C属性,使用<代码>留存< /代码>语义,在这种情况下,您所要做的是:

self.abc = [[[NSObject alloc] init] autorelease];
在这两种情况下,您的
dealloc
方法当然也应该包括
[abc发行版]