【问题标题】:ASIHTTPRequest and EXC_BAD_ACCESSASIHTTPRequest 和 EXC_BAD_ACCESS
【发布时间】:2012-05-18 10:53:22
【问题描述】:

实际上问题出在下面的屏幕上。当请求开始时出现:

问题仅出现在 iOS 5.0 及更高版本上。在 iOS 4.3 上似乎一切正常。会是什么?

UPD:原创image link

【问题讨论】:

  • 屏幕截图中看不到任何内容,您可以在崩溃的地方发布一些代码吗?
  • 是的,截图很糟糕
  • 我不确定,但似乎请求的目标已被释放,然后您尝试访问它。如果是这种情况并且您想快速解决它(但很难解决),请将请求的委托属性设置为保留而不是分配。
  • Ricard Pérez del Campo,这没有帮助。

标签: objective-c ios xcode asihttprequest exc-bad-access


【解决方案1】:

作为一个疯狂的猜测,没有看到任何相关代码,我会说你没有调用 -clearDelegatesAndCancel。

来自http://allseeing-i.com/ASIHTTPRequest/How-to-use

// Ddealloc method for our controller
- (void)dealloc
{
   [request clearDelegatesAndCancel];
   [request release];
   ...
   [super dealloc];
}

【讨论】:

    【解决方案2】:

    您通过释放不属于您的对象来破坏该方法中的 Cocoa 内存管理规则。我认为您已经过度释放了调用,而您只是幸运地使用了旧版本的框架。

    另外,你为什么在 NSInvocation 上使用 CFRelease?我不认为它可以免费桥接到任何 CF 对象。

    此外,NSInvocation 不保留其参数。确保它们没有被释放。

    【讨论】:

    • 该代码是 ASIHTTPRequest 的一部分(不确定询问者是否更改了任何内容),但调用的释放次数正确。 (不确定 CFRelease 与 NSInvocation 的事情。)提问者几乎肯定犯了错误,导致 ASIHTTPRequest 的委托设置为已释放的对象。
    • @JosephH:如果那段代码是 ASIHTTPRequest 的一部分,那么最好不要使用该代码。作者不了解内存管理规则。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-01-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多