好的,据我所知,当我调用一个旨在将 View 放入其正确框内的 setter 时,我遇到了错误。
_parrentViewFrame = parrentViewFrame;
self.containerView.frame = _parrentViewFrame;
self.containerView.bounds = _parrentViewFrame;
[self.containerView layoutIfNeeded];
在 layoutIfNeeded 上我得到这个错误
*** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[__NSCFNumber length]: unrecognized selector sent to instance 0xb000000000000343'
现在,我在整个应用程序中都有类似的代码,并且运行良好。我在 -[NSObject(NSObject) doesNotRecognizeSelector:] 处放置了一个符号断点。但这并没有真正的帮助。我仍然无法判断它正在尝试调用哪个对象。 containerView 是一个简单的 UIView。该实例始终为 0xb000000000000343,不确定这是否重要,但看起来很重要。我该如何调试这个问题?
最佳答案
可能会发生以下两种情况之一:
正如 rmaddy 所指出的,您可能已将
NSNumber
分配给不是NSNumber
的属性。NSString
似乎是符合UILayoutSupport
的候选者或对象。您可能过度释放了一个对象,而
NSNumber
正在取代该指针,因此错误的选择器调用。如果是这种情况,您可以打开 NSZombies,这将帮助您捕获过度释放的对象。在诊断下的方案设置中启用 NSZombies。
关于ios - Xcode如何调试发送到实例的无法识别的选择器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34889759/