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

发布于 2024-09-30 07:19:00 字数 239 浏览 1 评论 0原文

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

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

 abc = [[NSObject alloc] init];

}

我的流程对吗?谢谢。

objective c question, I have an pointer NSObject *abc;
I haven't alloc and init it in the init method.
So, do I need to do this in the method?

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

 abc = [[NSObject alloc] init];

}

Is my flow right? thank you.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

青衫儰鉨ミ守葔 2024-10-07 07:19:00

您的代码可以简化为:

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

因为

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

  • 无需设置 abcnil 如果您只是要分配给它

    ,则

,您要做的就是:

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

您还可以考虑将 abc 声明为具有 retain 语义的 Objective-C 属性,在这种情况下 无论哪种情况,您的 dealloc 方法当然还应该包含 [abc release]

Your code could be simplified to:

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

because

  • sending a -release message to nil does nothing, so no need to check for nil

  • no need to set abc to nil if you're just about to assign to it

You might also consider declaring abc as an objective-c property with retain semantics, in which case all you would do is:

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

In either case, your dealloc method should also include an [abc release], of course

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文