由于以下错误,我的应用程序崩溃了:
-[NSCFString count]: unrecognized selector sent to instance 0x612b060
有人可以告诉我这是什么意思吗?如何在我的代码中找到参考号为0x612b060的行
答案 0 :(得分:5)
您正在对一个对象(可能是一个集合,例如数组,字典或集合)调用count
方法,该对象已发布或尚未初始化。
答案 1 :(得分:3)
您正在NSCFString上发送消息“count”,意味着在NSString数据类型上调用“count”方法。
要查找代码,您可以使用堆栈跟踪,但我确定您正在做的是:
在NSArray或(Array数据类型)上分配NSString数据并尝试计数。
答案 2 :(得分:2)
很有可能发生这种情况是因为你有一个你没有正确保留的集合对象(例如NSArray,NSDictionary)。
尝试使用NSZombies查找已释放的对象。
Get Info
Variables to be set in the environment
中创建一个名为NSZombieEnabled
的变量,并将其值设置为YES
。别忘了激活它。完成此问题的调试后,您应该停用NSZombies。 NSZombies不会释放任何内存,只是将对象标记为已释放 所以你迟早会在记忆中发出警告 您只需删除它前面的复选标记即可停用NSZombies。
答案 3 :(得分:0)
您的意思是在您的字符串上调用length
吗?
答案 4 :(得分:0)
也许有人会需要这个:
当我遇到这种问题时,我用过:
[ myarray retain];
后
myarray = [NSArray arrayWithObjects: ...];
它起作用了。我想这是因为我的阵列太早破坏了自己。
但我不知道我现在怎么能释放这个物体?
只是[myarray autorelease]
?保留是否有相反的东西?
答案 5 :(得分:0)
一个实际的例子:
有时候,我还没有明确地理解其中的实际差异。 valueForKey
在SOGo-3.1.4代码中尝试调用不可用的"方法" ASProtocolVersion
对象上的context
:
`EXCEPTION: <NSException: 0x55f43f93e4d0> NAME:NSInvalidArgumentException REASON:-[WOContext ASProtocolVersion]: unrecognized selector sent to instance
而objectForKey
有效(并且是在代码中查询context
对象的常用方法)。