【发布时间】:2012-03-18 18:22:52
【问题描述】:
我在启用 ARC 的应用中使用了非 ARC 框架。现在我得到一个奇怪的EXC_BAD_ACCESS,看起来像这样:
return [super prepareURLRequest]; << Thread 1: Program received signal: "EXC_BAD_ACCESS".
首先,这怎么可能,因为super 不是一个可能被释放的对象。 更新:虽然 Debugger 卡在这一行,但事实证明问题在上述方法中更深一层。
当我在 Zombie mode 中运行该东西时,我得到以下“僵尸堆栈”:
Event Type RefCt Responsible Caller
Malloc 1 -[MyViewController loadData:]
Retain 2 -[MyDataManager initWithBaseURL:]
Release 1 -[MyDataManager initWithBaseURL:]
Release 0 -[MyViewController loadData:]
Zombie -1 -[RKRequest prepareURLReuqest]
似乎 url 有问题,但在 ARC 中,我无法保留 URL,因此它不会被分配。那么我该如何解决这个问题。
【问题讨论】:
-
你说的“超级不是一个实际的对象”是什么意思?
-
那么 super 是一个对象吗?是不是代表超类(但实际上并没有实例化),还是我错了。
-
你错了;你为什么这么认为?
-
super 和 self 是同一个对象。不同之处在于发送消息的方式(
obj_msgSendSuper而不是obj_msgSend)。 -
感谢您的澄清,我会相应地更新我的答案。
标签: iphone objective-c memory-management automatic-ref-counting nszombie