gpt4 book ai didi

iphone - asihttprequest 使我的应用程序崩溃

转载 作者:行者123 更新时间:2023-12-03 18:31:58 29 4
gpt4 key购买 nike

我有一个基于导航的应用程序。按主视图上的按钮,然后我将新 View 推送到导航 Controller 。所有非常基本的东西。

加载新 View 时,我会执行 ASIHTTPRequest 来获取一些 json 数据,这是图像 URL 的列表。然后我执行一个 for 循环,创建一堆 ASIHTTPRequest,将它们添加到队列中,然后运行该队列。

但是,如果我在队列完成之前单击后退按钮,应用程序就会崩溃,该应用程序会显示房屋,假设您选择了错误的房屋,则很快单击返回,在显示任何照片之前,就会崩溃。

此线程http://groups.google.com/group/asihttprequest/browse_thread/thread/3d4815198aa889b9很好地解释了我的问题,除了我确实取消了 View 上的所有请求并卸载了,将委托(delegate)设置为 nil 并释放队列。

我还是崩溃了。如果我使用 3G,我几乎每次都会崩溃,但在 wifi 上,确实很难让它崩溃,但还是可行的。

在几乎 80% 的情况下,调试器会跳转到 ASIHTTPRequest.m 中的这一行

(void)requestReceivedResponseHeaders:(NSMutableDictionary *)newResponseHeaders { 
if ([self error] || [self mainRequest]) { return; }
--> if (delegate && [delegate respondsToSelector:didReceiveResponseHeadersSelector]) {

它跳转到很多很多情况:

(void)requestReceivedResponseHeaders:(NSMutableDictionary *)newResponseHeaders { 
if ([self error] || [self mainRequest]) { return; }
---> if (delegate && [delegate respondsToSelector:didReceiveResponseHeadersSelector]) {

广告在少数情况下会进入我的主循环

int main(int argc, char *argv[]) {  
NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init];
--> int retVal = UIApplicationMain(argc, argv, nil, nil); with SIGBART error [pool release]; return retVal;

我使用 MBP 和 MacPro、最新的 OS X、Xcode 4.0.2,并在除原始 iPhone 之外的所有 Apple 设备上进行测试。

我真的不想重写我的整个应用程序,但是还有其他东西可以与 ASIHTTPRequest 相比吗?

最佳答案

尝试在 -viewWillUnload 而不是 -viewDidUnload 中取消和取消设置委托(delegate)。我怀疑它实际卸载的时间窗口(在调用这两个 UIViewController 方法之间)是你崩溃的时间段。委托(delegate)已经消失,但您还没有告诉 ASIHTTPRequest 对象。

关于iphone - asihttprequest 使我的应用程序崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5701132/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com