仅在iPhone 4S上委托的错误访问

时间:2016-08-14 15:23:21

标签: ios objective-c iphone delegates

我的应用程序在调用委托时(在IBAction方法内)随机时间后崩溃,但仅在Simulator中的iPhone 4S上崩溃。所有其他较新的iPhone都很棒。

observeEvent()

当然我正在使用ARC。可能是什么原因?

解决: 在某些条件下传递委托方法的参数无意中从内存中释放。将其改为强类型有帮助。

1 个答案:

答案 0 :(得分:2)

原因是您使用的是assign。这基本上意味着“让我崩溃”。如果你的delegate不存在,你就会指向垃圾,任何访问垃圾的尝试都会导致崩溃。实际上,你已经抛弃了ARC给你的优势。

要恢复该优势,请改用weak。现在,如果您的delegate不再存在,您将拥有nil并且可以继续进行。

摆脱崩溃之后,您现在可以检查nil并尝试找出为什么您的delegate已经不再存在,而您显然没有期待它。请记住,您所看到的问题是我们所谓的“诊断”;代表可能很久以前就已经不存在了,或者它可能从来没有被分配过,但是认为这是一个完全独立的事情。