我在我的 iPhone 应用程序中使用它
if (title == nil) { // do something }
但它引发了一些异常,控制台显示标题为“(null)”。
所以我现在使用这个:
if (title == nil || [title isKindOfClass:[NSNull class]]) { //do something }
有什么区别,确定字符串是否为空的最佳方法是什么?
正如其他人指出的那样,在 Cocoa/Objective C 下有多种“null”。但要注意的另一件事是 [title isKindOfClass:[NSNull class]] 是毫无意义的复杂,因为 [NSNull null] 被记录为单例,因此您可以检查指针是否相等。请参阅Cocoa 主题:使用 Null。
所以一个好的测试可能是:
if (title == (id)[NSNull null] || title.length == 0 ) title = @"Something";
请注意如何使用这样一个事实:即使 title 为 nil,title.length 也会返回 0/nil/false,即在这种情况下为 0,因此您不必对它进行特殊处理。这是 Objective C 新手很难习惯的东西,尤其是来自其他语言,其中消息/方法调用 nil 崩溃。