我的第一个实验块给了我EXC_BAD_ACCESS,我不知道为什么
问题描述:
- 你好,只是标题说。我有一个下载类,我想用来..下载的东西。我想我尝试使用块来通知呼叫者下载已完成。 startWithRequest
方法从处理.net Web服务的单例类中调用。我将completionBlock
存储在实例变量中,然后在下载完成后再调用它。在那里它给我EXC_BAD_ACCESS
。我试图保留completionBlock
它没有帮助。这里是代码:我的第一个实验块给了我EXC_BAD_ACCESS,我不知道为什么
任何帮助表示赞赏。
答
您需要复制块,而不是保留它。
保留数量不会保存在堆栈上实例化的块,因为它的存储将在退出时定义的函数立即消失。
-(void) startWithRequest : (NSURLRequest *) request : (void (^)(NSData *data, NSError *error))_completionBlock {
completionBlock = [_completionBlock copy];
// etc
+0
是的,这是问题。看来所有的阅读我仍然不明白这一点。但至少它有效。 – 2012-01-17 12:08:35
我想你想释放一些你已经发布的变量。试着用断点运行你的项目,看看问题出在哪一行。 – relower 2012-01-17 10:52:07
我知道它给我的错误(我刚刚标记了位置),但我不知道为什么。 – 2012-01-17 10:54:53
即时通讯不知道,我不知道确切的问题。在崩溃之前确保你的连接不是零调试? – relower 2012-01-17 11:09:20