如何在Objective-C中检查对象是否为零?

时间:2015-03-04 10:57:17

标签: ios objective-c

所以我知道这看起来非常基本,但似乎并没有因某些原因而起作用。我有以下代码。

Target *t = self.skill.target;


if (![t isEqual:nil]) {
    NSLog(@"Not nil");
}

我试过这个并且它每次出现都不是nil,除非t实际上应该为零时才是好的。我甚至尝试将变体放入代码中,因为某些原因,我的t仍然是nil。难道我做错了什么? :\

Target *t = self.skill.target;
t = nil;

if (![t isEqual:nil]) {
    NSLog(@"Not nil");
}

4 个答案:

答案 0 :(得分:10)

只需检查对象本身就可以正常进行。 NSHipster for NSNull还有一个很好的解释。

if( myObject ){
    // do something if object isn't nil
} else {
    // initialize object and do something
}

否则只需使用

if( myObject == nil ){

} 

答案 1 :(得分:0)

if操作检查nillable,因此这应该有效:

Target *t = self.skill.target;
if (t) {
    NSLog(@"Not nil");
}else{
    NSLog(@"nil");
}

希望它有所帮助。

答案 2 :(得分:0)

Target *t = self.skill.target;
t = nil;

if (t) {
    NSLog(@"t is Not nil");
}
if (!t) {
    NSLog(@"t is nil");
}

答案 3 :(得分:0)

正如this回答所说:

  

对nil的任何消息都将返回一个结果,该结果相当于所请求类型的0。由于布尔值为0,因此为结果。

因此,nil对象很特殊。你无法使用isEqual方法进行比较。你应该比较它而不发送消息,如下:

if (t) 
{
}

或简单地说:

if (t != nil)
{
}