无法识别的选择发送到实例
问题描述:
谁能告诉我什么是此错误代码怎么回事?男人苹果是神秘的。我刚刚通过ObjectiveResource调用了我所知道的数据。
-[NSDecimalNumber allKeys]: unrecognized selector sent to instance 0x5c671f0
2011-03-02 02:07:56.169 Mobile[13839:207] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[NSDecimalNumber allKeys]: unrecognized selector sent to instance 0x5c671f0'
*** Call stack at first throw:
(
0 CoreFoundation 0x0133bbe9 __exceptionPreprocess + 185
1 libobjc.A.dylib 0x014905c2 objc_exception_throw + 47
2 CoreFoundation 0x0133d6fb -[NSObject(NSObject) doesNotRecognizeSelector:] + 187
3 CoreFoundation 0x012ad366 ___forwarding___ + 966
4 CoreFoundation 0x012acf22 _CF_forwarding_prep_0 + 50
5 Mobile 0x00013aa5 +[NSObject(JSONSerializableSupport) deserializeJSON:] + 832
6 Mobile 0x000138ad +[NSObject(JSONSerializableSupport) deserializeJSON:] + 328
7 Mobile 0x00012f0e +[NSObject(JSONSerializableSupport) fromJSONData:] + 161
8 Mobile 0x0000c8fa +[NSObject(ObjectiveResource) findAllRemoteWithResponse:] + 336
9 Mobile 0x0000c933 +[NSObject(ObjectiveResource) findAllRemote] + 43
10 Mobile 0x00004732 -[AllTableViewController refresh] + 103
答
NSDecimalNumber不支持allKeys方法。
答
您调用NSDecimalNumber
和NSDecimalNumber
上的allKeys方法可以使用这种方法,这就是为什么你会崩溃。
allKeys方法调用NSDictionary
或NSMutableDictionary
。
所以输入where
得到这个日志后,你会得到行号,你需要编辑代码。
答
正如其他人指出NSDecimalNumber
不响应allKeys
选择器,并导致崩溃。
可能发生这种情况是因为NSDictionary的实例,由于某种原因(缺少保留?)提前释放了预期的消息响应程序,并且其在内存中的地址被NSDecimalNumber
实例占用了该错误消息。
所以要解决这个问题,请尝试找到消息的行并检查代码中的内存管理是否一切正常。
+1
如果是的话,那么你需要找到它不在的地方,因为内存管理肯定是不行的*某处*。乐器的僵尸模板将帮助找到罪魁祸首,因为您可以查看过早释放对象的整个保留和释放历史记录。 – 2011-03-02 10:18:28
+ 1.看似简单类型不匹配。 – 2011-03-02 08:25:30