这个问题分为两部分
1)这种理解是否正确?
“if(obj)”正在测试指针是否不是0x0,也就是设置为整数内存地址
“如果(obj!=nil)”是比较对象的内存地址和通用nil对象的内存地址
2个)
所以在我不知道变量是否指向任何东西的情况下,如果指向任何东西,我也不知道那个对象是有效的对象还是零。我想根据这些信息做很多事情,而不仅仅是向obj传递一条消息,我意识到如果它是零的话是安全的。这个代码是正确的也是必要的吗?

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只是#definesnil(void *)0,用c来说,这是错误的。所以简单的写作

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

已经足够了。此外,由于objective-c具有消息吃nil,因此在某些情况下可以简单地省略检查。(例如,如果第二行不在if块中,则可以不加选择地调用[obj someMessage]。)

09-10 02:49
查看更多