首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >NSRange奇怪的行为

NSRange奇怪的行为
EN

Stack Overflow用户
提问于 2011-03-11 23:56:08
回答 1查看 551关注 0票数 2

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

代码语言:javascript
运行
复制
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,在模拟器中等于零。

我做错了什么吗?

EN

回答 1

Stack Overflow用户

发布于 2011-03-12 04:11:21

The Objective-C Programming Language

从消息返回到nil的值也可能是有效的:

  • 如果该方法返回一个对象,则发送到nil的消息返回0 (nil)。例如: Person * mother = [aPerson spouse ];如果这里的spouse对象是nil,那么母亲将被发送到nil,并且该方法返回nil。
  • 如果方法返回任何指针类型、小于或等于sizeof(void*)的任何整数标量、浮点型、双精度型、长整型双精度型或长整型,则发送到nil的消息返回0。
  • If该方法返回一个结构体,如Mac函数调用指南所定义,在寄存器中返回,然后发送到nil的消息为结构中的每个字段返回0.0。其他结构数据类型将不会用零填充。
  • 如果该方法返回上述值类型以外的任何值,则发送到nil的消息的返回值是未定义的。

这是针对Mac的,但我认为可以肯定地说,如果message target为nil,则不应依赖返回的struct值。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5275201

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档