我正在尝试更改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;
,但问题仍然存在。