gpt4 book ai didi

iphone - if(obj && obj != nil) 是否正确且必要?

转载 作者:搜寻专家 更新时间:2023-10-30 19:50:15 25 4
gpt4 key购买 nike

这个问题的两个部分

1) 这种对正在发生的事情的理解是否正确?
“if (obj)”正在测试指针是否不是 0x0,也就是设置为整数内存地址
"if (obj != nil)"是比较对象的内存地址和通用nil对象的内存地址

2)所以在我不知道变量是否指向任何东西的情况下,如果是的话,我也不知道该对象是有效对象还是 nil。我想根据这些信息做各种事情,而不仅仅是向 obj 传递一条消息,我意识到如果它是 nil 的话它是安全的。这段代码是否正确且必要?

if (obj && obj != nil) {
// Do a bunch of things that should only happen if obj is pointing to a valid object
[obj someMessage];
[anotherObj someOtherMessage];
}

谢谢大家!

最佳答案

对吗?是的。必要的?不。Objective-C 只是将 #definenil 转换为 (void *)0,在 C 术语中,这是错误的。这么简单的写

if (obj) {
[obj someMessage];
[anotherObj someOtherMessage];
}

就足够了。此外,由于 Objective-C 有 message-eating nil,在某些情况下您可以简单地省略检查。 (例如,如果第二行不在 if block 中,您可以简单地调用 [obj someMessage] 不加区别。)

关于iphone - if(obj && obj != nil) 是否正确且必要?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1758830/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com