我有一个基于导航的应用程序。在主视图上按下一个按钮,然后我向导航控制器推送一个新视图。这些都是相当基础的东西。
当加载新视图时,我执行ASIHTTPRequest以获取一些JSON数据,其中包含图像URL列表。 然后我进行for循环,创建一堆ASIHTTPRequests,将它们添加到队列中,然后运行队列。
但是,如果在队列完成之前点击返回按钮,应用程序会崩溃。该应用程序显示房屋,并且假设您选择了错误的房屋,快速点击返回按钮,而没有显示任何照片,就会崩溃。
这个线程http://groups.google.com/group/asihttprequest/browse_thread/thread/3d4815198aa889b9很好地解释了我的问题,除了我在视图取消加载时取消所有请求,将委托设置为nil并释放队列。
即使如此,我仍然会崩溃。如果使用3G,我几乎每次都会崩溃,但在WiFi上很难让它崩溃,但是完全可以做到。
在近80%的情况下,调试器会跳转到ASIHTTPRequest.m中的这一行。
许多情况下它会跳转到:
在一些情况下,它会进入我的主循环。
我正在使用MBP和MacPro,最新的OS X,Xcode 4.0.2,并在除原始iPhone之外的所有苹果设备上进行测试。
我真的不想重新编写我的整个应用程序,但是否有其他与ASIHTTPRequest相似的东西?
当加载新视图时,我执行ASIHTTPRequest以获取一些JSON数据,其中包含图像URL列表。 然后我进行for循环,创建一堆ASIHTTPRequests,将它们添加到队列中,然后运行队列。
但是,如果在队列完成之前点击返回按钮,应用程序会崩溃。该应用程序显示房屋,并且假设您选择了错误的房屋,快速点击返回按钮,而没有显示任何照片,就会崩溃。
这个线程http://groups.google.com/group/asihttprequest/browse_thread/thread/3d4815198aa889b9很好地解释了我的问题,除了我在视图取消加载时取消所有请求,将委托设置为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之外的所有苹果设备上进行测试。
我真的不想重新编写我的整个应用程序,但是否有其他与ASIHTTPRequest相似的东西?