作者热门文章
- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
出于各种原因,为了使数组的索引与其他事物保持一致,我在数组中加入了[NSNull null]
。像这样:
NSArray *arr = @[obj1, obj2, obj3, [NSNull null], obj4];
在遍历数组以确保忽略 null
值时,我正在考虑使用两种方法,但我不确定哪种方法更快。
方法一
for (id obj in arr) {
if (![[NSNull null] isEqual:obj]) {
//Do stiff
}
}
方法二
for (id obj in arr) {
if ([obj isKindOfClass:[MyObject class]]) {
//Do stiff
}
}
我的问题是:因为我正在遍历这个数组以适本地处理平铺 ScrollView (因此它在用户滚动时被执行多次并且它尽可能快地运行是至关重要的),哪个这些方法哪个更快?
最佳答案
[NSNull null]
是一个单例,所以最简单的事情就是检查对象指针是否相同。
如果你真的想快点,这样做:
for (id obj in arr) {
if ([NSNull null]!=obj) {
//Do stuff
}
}
但是您不太可能在视觉界面上看到任何差异,因为我们谈论的是非常非常小的差异。
评论中讨论的一个选项是将 [NSNull null]
放在局部变量中以加快检查速度,但编译器可能会为您完成,所以我只是把这个此处供引用:
NSObject *null_obj=[NSNull null];
for (id obj in arr) {
if (null_obj!=obj) {
//Do stuff
}
}
关于ios - 等于 : and isKindOfClass: - Which is faster?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26429083/
我是一名优秀的程序员,十分优秀!