Objective c 在分配对象之前是否需要检查对象nil?
目标c问题,我有一个指针NSObject*abc; 我没有在init方法中分配和初始化它。 那么,我需要在方法中这样做吗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]; 因为 将
-(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发行版]