【发布时间】:2013-11-27 12:51:22
【问题描述】:
我正在为 iOS 7 优化一个旧应用程序,并且必须处理我以前从未处理过的非 ARC 代码。问题在于应用内购买,使用库 MKStoreKit。该应用程序正在使用它的旧版本和修改版本。我不能使用较新的版本,因为无法访问服务器。 导致错误的代码行是:
[MKStoreManager sharedManager];
错误本身是:
-[MKStoreManager retain]: message sent to deallocated instance 0x145e6ba0
我使用了 NSZombie,这是我得到的:
因此,我们将不胜感激任何帮助。我已经花了三天的时间,试图解决这个问题。
更新: MKStoreManager.m: http://pastebin.com/ZppTkxmN
MKStoreManager.h: http://pastebin.com/TJVM7UdN
导致错误的行:
【问题讨论】:
-
调用sharedManager时是否出现此错误?你有那个修改版的 MKStoreKit 的源代码吗? 3 天似乎足以学习非 ARC,你知道保留发布的东西,对吧?
-
我已经用 MKStoreManager 代码更新了这个问题。我当然有非 ARC 的基本知识,但似乎还不够。
-
我建议从断点导航器添加异常断点。它将向您显示哪一行引发了该异常。 sharedManager 方法看起来像一个有效的方法。
-
我已经试过了。用截图更新了问题。
-
你能在
sharedManager中设置断点吗?看起来allocWithZone:中的@synchronized 可能会导致死锁。我将使用 Apple 推荐的 GCD 单例模式切换此代码。
标签: ios objective-c in-app-purchase mkstorekit