弱指针在块中为零

时间:2014-04-02 11:17:24

标签: ios iphone objective-c memory-management block

我正在我的块上方创建一个弱者

 __weak typeof (self) weakSelf = self;
    [NSURLConnection sendAsynchronousRequest:[NSURLRequest requestWithURL:url cachePolicy:NSURLCacheStorageNotAllowed timeoutInterval:10.0]
                                       queue:[NSOperationQueue mainQueue] completionHandler:^(NSURLResponse *response, NSData *data, NSError *connectionError ){
                                           NSArray *array = weakSelf.myArray;
                                           NSError *error;

}

在块中,弱者自己是零,与弱者有关的每一个属性也都是零。

有人可以告诉我这里我做错了吗?

1 个答案:

答案 0 :(得分:4)

没有任何“错误”。 self指向的对象已被解除分配(因此引用为nil)。

请记住,2个代码的接近程度并不等于使用异步回调时它们运行时的接近程度。

您需要检查实例在不期望的情况下被解除分配的原因(您可以实现dealloc并在那里添加断点)。