注意:此崩溃仅发生在iOS 9
中我有这个子类:
@interface PTSwitch : UIControl
@property (nonatomic) BOOL on;
@property (nonatomic) NSInteger identifier;
- (void)setOn:(BOOL)on animated:(BOOL)animated;
@end
当我尝试访问“标识符”属性时...
alertSwitch.on = YES;
alertSwitch.identifier = 1;
......我得到一个例外:
-[PTSwitch setIdentifier:]: unrecognized selector sent to instance
我已在调试器中验证该对象确实是我的子类。另外,正如您所看到的,在identifier
之前调用的是on
属性,可以毫无问题地访问该属性。
po alertSwitch
<PTSwitch: 0x1383620f0; baseClass = UISwitch; frame = (257 62; 51 31); alpha = 0.5; autoresize = RM+BM; tag = 666; layer = <CALayer: 0x136dd1800>>
po [alertSwitch class]
PTSwitch
修改
我刚注意到调试器似乎认为基类是UISwitch。我不知道为什么会这样,显然基类是UIControl。我对此没有任何解释,但怀疑它可能是相关的。
旁注,此崩溃开始发生在使用Xcode 7 for iOS 8构建的版本上,并且未重建以导致应用程序开始崩溃。
答案 0 :(得分:1)
@rmaddy,这是一个非常有用的提示
我快速搜索了#34; PTSwitch&#34;在谷歌上找到了iOS 8.3+中对运行时头的引用。我不确定为什么我在iOS 9之前没有遇到此崩溃,但现在肯定已经解决了。
解决方案:将类重命名为PTSwitch以外的其他内容。