2012-01-17 59 views
0

- 你好,只是标题说。我有一个下载类,我想用来..下载的东西。我想我尝试使用块来通知呼叫者下载已完成。 startWithRequest方法从处理.net Web服务的单例类中调用。我将completionBlock存储在实例变量中,然后在下载完成后再调用它。在那里它给我EXC_BAD_ACCESS。我试图保留completionBlock它没有帮助。这里是代码:我的第一个实验块给了我EXC_BAD_ACCESS,我不知道为什么

​​

任何帮助表示赞赏。

+0

我想你想释放一些你已经发布的变量。试着用断点运行你的项目,看看问题出在哪一行。 – relower 2012-01-17 10:52:07

+0

我知道它给我的错误(我刚刚标记了位置),但我不知道为什么。 – 2012-01-17 10:54:53

+0

即时通讯不知道,我不知道确切的问题。在崩溃之前确保你的连接不是零调试? – relower 2012-01-17 11:09:20

回答

4

您需要复制块,而不是保留它。

保留数量不会保存在堆栈上实例化的块,因为它的存储将在退出时定义的函数立即消失。

-(void) startWithRequest : (NSURLRequest *) request : (void (^)(NSData *data, NSError *error))_completionBlock { 
    completionBlock = [_completionBlock copy]; 

// etc 
+0

是的,这是问题。看来所有的阅读我仍然不明白这一点。但至少它有效。 – 2012-01-17 12:08:35

相关问题