What is the right way to check for a null string in Objective-C?

后端 未结 20 1759
梦毁少年i
梦毁少年i 2020-11-27 09:26

I was using this in my iPhone app

if (title == nil) {
    // do something
}

but it throws some exception, and the console shows that the ti

20条回答
  •  一生所求
    2020-11-27 10:04

    As others have pointed out, there are many kinds of "null" under Cocoa/Objective C. But one further thing to note is that [title isKindOfClass:[NSNull class]] is pointlessly complex since [NSNull null] is documented to be a singleton so you can just check for pointer equality. See Topics for Cocoa: Using Null.

    So a good test might be:

    if (title == (id)[NSNull null] || title.length == 0 ) title = @"Something";
    

    Note how you can use the fact that even if title is nil, title.length will return 0/nil/false, ie 0 in this case, so you do not have to special case it. This is something that people who are new to Objective C have trouble getting used to, especially coming form other languages where messages/method calls to nil crash.

提交回复
热议问题