无法识别的选择发送到实例

问题描述:

可能重复:
Unrecognized selector sent to instance无法识别的选择发送到实例

谁能告诉我什么是此错误代码怎么回事?男人苹果是神秘的。我刚刚通过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方法。

您调用NSDecimalNumberNSDecimalNumber上的allKeys方法可以使用这种方法,这就是为什么你会崩溃。

allKeys方法调用NSDictionaryNSMutableDictionary

所以输入where得到这个日志后,你会得到行号,你需要编辑代码。

+0

+ 1.看似简单类型不匹配。 – 2011-03-02 08:25:30

正如其他人指出NSDecimalNumber不响应allKeys选择器,并导致崩溃。

可能发生这种情况是因为NSDictionary的实例,由于某种原因(缺少保留?)提前释放了预期的消息响应程序,并且其在内存中的地址被NSDecimalNumber实例占用了该错误消息。

所以要解决这个问题,请尝试找到消息的行并检查代码中的内存管理是否一切正常。

+1

如果是的话,那么你需要找到它不在的地方,因为内存管理肯定是不行的*某处*。乐器的僵尸模板将帮助找到罪魁祸首,因为您可以查看过早释放对象的整个保留和释放历史记录。 – 2011-03-02 10:18:28