我有一个线程(异步操作),它从服务器下载一些数据,当下载结束时,该线程调用一个方法。但是,如果用户在下载结束前按下导航控制器的后退按钮,则会收到EXC_BAD_ACCESS(代码= EXC_I386_GPFLT)致命错误。
我尝试了很多东西,但我无法处理这次崩溃。
如果用户在异步操作结束前按下导航控制器的后退按钮,我该如何处理错误?
我使用Objective-C和Dropbox API,我使用的方法是
values1 = [1.346112,1.337432,1.246655]
values2 = [1.033836,1.082015,1.117323]
metrics.mutual_info_score(values1,values2)
当我按下后退按钮时,我会在僵尸对象和Profile Inspector的帮助下获取信息。多亏了他们,我可以看到崩溃前的最后一次通话:
loadThumbnail:ofSize:intoPath of the class DBRestClient.
但是这个调用是在被解雇的视图控制器中释放所有对象之后完成的。
答案 0 :(得分:0)
您必须在dealloc中取消正在运行的请求。 DBRequest
有cancel
方法,DBRestClient
有cancelAllRequests
方法。
同时将所有相关代表设为nil。
connectionDidFinishLoading:
是协议NSURLConnectionDataDelegate
的一种方法。这是在一个对象上调用的,它不再存在,因此崩溃。