iOS4.3模拟器中的iOS5稳定应用程序崩溃
Posted
技术标签:
【中文标题】iOS4.3模拟器中的iOS5稳定应用程序崩溃【英文标题】:iOS5 Stable App Crashing in iOS4.3 Simulator 【发布时间】:2012-01-26 14:17:42 【问题描述】:我收到一个 NSInvalidArgumentException 原因:-[UITapGestureRecognizer initWithCoder:]: unrecognized selector sent to instance
我的理解是 ios4.x 支持 UITapGestureRecognizers?
是否可以为 sub ios5 版本加载不同的 xib 文件?
【问题讨论】:
它们在 4.x 中受支持,问题是你不能只将它们放在 xib 中(我想这里就是这种情况)。您不能在代码中设置它或制作另一个 xib 并在版本检查后加载它。 查看this potentially related question。您可能需要以不同的方式实例化您的 UITapGestureRecognizers。 在我看来,您的识别器正在被释放...... UIGestureRecognizer 没有响应 -initWithCoder: 这就是它崩溃的原因。 (我认为指向 UIGestureRecognoizer 对象的解除分配指针正在被另一个对象接管,该对象应该响应 initWithCoder:...) 【参考方案1】:正如@mit3z 在他对原始问题的评论中所说,iOS 4.3 仅在使用代码手动设置时才支持此功能。 Interface Builder 不支持它。
如果 Apple 只是将其添加为构建时警告,那么他们就不会为此感到悲伤。
【讨论】:
这解决了我的问题。如需通过代码快速添加 GestureRecognizer,请在此处查看答案:***.com/questions/5954934/…【参考方案2】:我认为你有一个 NSCoding 兼容的对象在崩溃前被释放。 UITapGestureRecognizer 在其地址分配,当消失的对象(但不是其引用)尝试对其自身调用 initWithCoder 时,它实际上会在您的gestureRecognizer 上调用此方法。
那么你的问题来自那个被释放的对象,而不是你的gestureRecognizer。
确保保留所有 IBOutlet 属性。
【讨论】:
你不能同时使用 ARC 和调用 retain。如果调用保留编译,你没有使用 ARC。 我认为他的意思是他正在输入strong
或 retain
输入他的 IBOutlet 属性,而不是实际调用对象本身的保留。如果他真的用 arc 调用retain
,代码将无法编译。以上是关于iOS4.3模拟器中的iOS5稳定应用程序崩溃的主要内容,如果未能解决你的问题,请参考以下文章