【发布时间】:2015-01-10 17:29:27
【问题描述】:
我有一个 iPad 应用程序(XCode 6.1.1、iOS 8.1、ARC),当我在 8.1 模拟器上运行它时,应用程序在比较字符串长度时崩溃。这已经运行了一年多,昨天停止了。这是代码:
这是.h文件中的代码:
@property NSString *shopOpenHour;
@property NSString *shopCloseHour;
这是.m文件中的代码:
@synthesize shopOpenHour;
@synthesize shopCloseHour;
和:
if(shopOpenHour.length == 0 || shopCloseHour.length == 0) {
这也会导致崩溃:
NSLog(@"\n\nlength test: %d", (int)shopCloseHour.length);
这是我得到的错误:
*** 由于未捕获的异常“NSInvalidArgumentException”而终止应用程序,原因:“-[__NSCFNumber 长度]:无法识别的选择器发送到实例 0xb000000000003203”
在 7.1 模拟器和运行 iOS 8.1 的 iPad 下运行良好。我不明白 NSCFNumber 在“图片中”的位置/原因。
我的问题是:关于是什么原因的任何想法(在我提交 RADAR 之前?)
【问题讨论】:
-
听起来是可以重现的。为什么不定义你自己的设置器来检查参数的类型并在它不是
NSString时转储堆栈跟踪/断点? -
也许您定义了另一个名为
shopCloseHour的字段?在您的if和NSLog语句中将shopCloseHour替换为_shopCloseHour,然后重试。
标签: objective-c nsstring ios8.1