无法在异步块中更改self的属性

时间:2014-03-21 14:00:41

标签: ios asynchronous automatic-ref-counting

我正在尝试更改self的某些属性,但是我无法在异步块中更改它。 这是我的代码:

__weak typeof(self) weakSelf = self;

NSURLSessionDataTask *postTask = [session dataTaskWithRequest:request completionHandler:^(NSData *data, NSURLResponse *response, NSError *error) {
    if (response == nil)
    {
        // do something
    }
    else
    {
        // do something else

        dispatch_async(dispatch_get_main_queue(), ^{
            NSString *markerName = [NSString stringWithFormat:@"public-%@",[weakSelf.pad getMarkerNameForCategory:weakSelf.categoryLabel.text]];
            weakSelf.pad.markerName = markerName;

            [weakSelf.navigationController popViewControllerAnimated:YES];
        });
    }
}];

     [postTask resume];
}

如果我在赋值weakSelf.pad.markerName = markerName之后设置断点,则没有设置markerName,它仍然是旧值。

一些项目详情:iOS 7,启用ARC

修改

将第一行更改为__block typeof(self) weakSelf = self;,但问题仍然存在。

0 个答案:

没有答案