Apple 建议使用静态全局或 __block 存储类型来修改外部变量。
dispatch_async() 需要一个没有参数的块。
从该块中修改 self.prop 的最干净最安全的方法是什么?
使用原子设置器?
将块包裹在块中?
调度回主线程?
我的场景:该块正在发出网络请求。完成后,我必须解析一些返回的数据并在几个不同的对象上设置属性,以便我可以进行后续网络请求。这些块正在异步处理,但根据用户输入,第二个块可以与第一个块所需的数据一起提交到队列。这就是我想做的。
@implementation MyNetworkManager {
dispatch_queue_t op_queue;
NSURL *_redirectedURL;
}
void (^initPageOperation) (void) = ^(void) {
NSURL *url;
NSMutableURLRequest *urlRequest;
url = [NSURL URLWithString:domain];
urlRequest =
[NSMutableURLRequest requestWithURL:url
cachePolicy:NSURLRequestUseProtocolCachePolicy
timeoutInterval:5];
[urlRequest setHTTPMethod:@"GET"];
NSData *data = nil;
NSURLResponse *urlResponse = nil;
NSError *err = nil;
data = [NSURLConnection sendSynchronousRequest:urlRequest
returningResponse:&urlResponse
error:&err];
if (urlResponse) {
if (![urlResponse.URL isEqual:url]) {
//Here's where I want to set the redirectedURL.
_redirectedURL = urlResponse.URL;
}
}
};