我在我的 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] 已记录在案成为单例,因此您可以检查指针是否相等。见 Topics for Cocoa: Using Null .
所以一个好的测试可能是:
if (title == (id)[NSNull null] || title.length == 0 ) title = @"Something";
请注意如何使用这样一个事实,即使 title 为 nil,title.length 也会返回 0/nil/false,即在这种情况下为 0,因此您不必对它进行特殊处理。这是 Objective C 新手很难适应的东西,尤其是来自其他语言的消息/方法调用 nil 崩溃的语言。
https://stackoverflow.com/questions/968792/
相关文章:
ios - 具有 UITapGestureRecognizer 的 View 中的 UIButton
objective-c - Objective-C 中的方法语法
ios - 在 UITableViewCell 中有一个 UITextField
objective-c - 为什么 Objective-C 委托(delegate)通常被赋予属性分
objective-c - 如何等待异步调度的 block 完成?
ios - UIImageView 上的 UIGestureRecognizer
ios - Storyboard 中的 Modal 和 Push segue 有什么区别?