Ios 奇怪的行为

Ios 奇怪的行为,ios,nsrange,Ios,Nsrange,我的设备(iPhone iOS 4.3)上有奇怪的NSRange行为。此代码在设备和模拟器上具有不同的行为 for (Location *location in locationArray) { NSRange range1 = [location.name rangeOfString:searchText options:NSCaseInsensitiveSearch]; NSRange range2 = [location.streetAddress rangeOfStrin

我的设备(iPhone iOS 4.3)上有奇怪的NSRange行为。此代码在设备和模拟器上具有不同的行为

for (Location *location in locationArray)
{
    NSRange range1 = [location.name rangeOfString:searchText options:NSCaseInsensitiveSearch];
    NSRange range2 = [location.streetAddress rangeOfString:searchText options:NSCaseInsensitiveSearch];
    NSRange range3 = [location.postalCode rangeOfString:searchText options:NSCaseInsensitiveSearch];

if (range.length1 > 0 | range2.length > 0 | range3.length > 0)
    [self.filteredList addObject:location];
}
如果某些属性的值为零,则该属性的range.lenght在设备上等于2,在模拟器中等于零

for (Location *location in locationArray)
{
    NSRange range1 = [location.name rangeOfString:searchText options:NSCaseInsensitiveSearch];
    NSRange range2 = [location.streetAddress rangeOfString:searchText options:NSCaseInsensitiveSearch];
    NSRange range3 = [location.postalCode rangeOfString:searchText options:NSCaseInsensitiveSearch];

if (range.length1 > 0 | range2.length > 0 | range3.length > 0)
    [self.filteredList addObject:location];
}
我做错什么了吗?

从发送到的消息返回的值 无也可能是有效的:

  • 如果该方法返回一个对象,则 发送到nil的消息返回0(nil)。 例如:Person*motherInLaw= [[配偶]母亲];如果 这里的配偶对象为零,那么母亲 被发送到nil,该方法返回 零
  • 如果该方法返回任何指针 类型,大小小于的任何整数标量 大于或等于sizeof(void*),a 浮球、双人、长双人或长双人 long long,然后向nil发送一条消息 返回0
  • 如果该方法返回 结构,由Mac OS X ABI定义 要在中返回的函数调用指南 注册,然后向nil发送一条消息 为字段中的每个字段返回0.0 结构。其他结构数据类型将 不能用零填充
  • 如果 方法返回除 前面提到的值类型,返回 发送到nil的消息的值为 未定义
它适用于MacOSX,但我认为可以肯定地说,如果消息目标为nil,则不应该依赖返回的结构值