我使用 NSURLConnection 下载文件,当用户点击返回时,我不一定知道连接是否已完成以及是否已正确处理。所以我添加了以下检查,如果连接不为空,则取消它。
if (self.urlConnection){
[self.urlConnection cancel];
}
这在 iOS 7/8 中有效,我从未收到过异常。但是现在在 iOS 9 中,当我检查连接是否存在(并且不存在)时,我得到一个异常。这是上面的第一行,在我实际调用 url 之前。
我不明白为什么检查一个对象是否为 nil 会抛出异常,如果抛出的话——我该如何防范这个异常。
有没有一种新方法可以确保对象存在并且在我调用它之前没有被释放?
编辑:这是声明属性的方式:
@property (nonatomic, assign) NSURLConnection *urlConnection;
如果对象实际上还没有被实例化,检查工作正常。只有当连接完成并变为 nil 时,我才会尝试检查支票是否为 nil。这在早期的 iOS 版本上没有发生。
最佳答案
是的,有...使用弱引用。
__weak typeof(self) weakSelf = self;
...
..
.
[weakSelf.urlConnection cancel]
关于ios - 如何防止我不知道的对象上的 EXC_BAD_ACCESS 在 iOS 9 中发布?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34937390/