打电话通常是个好主意-[NSRunLoop runUntilDate:]
吗?它似乎可以正常工作,但是告诉运行循环从运行循环中运行让我感到紧张。
更多信息:
我现在有一个从 REST 服务获取数据的项目。需要获取的一项关键信息是具有有效数据的日期范围。这是一小部分数据,只需要获取一次,所以我决定处理它的最佳方法是让属性下载数据,如果局部变量是nil
. 我正在使用ASIHTTPRequest
and ASINetworkQueue
,所以默认情况下一切都是异步的,为了使其正常工作,在下载和处理数据之前,该属性无法返回。这是我的代码大纲,变量的名称已更改以保护无辜者:
__block BOOL isWorking = YES;
__block ASIHTTPRequest *request = [[[ASIHTTPRequest alloc] initWithURL:/*actual URL*/] autorelease];
[request setCompletionBlock:^{
// set local variable
isWorking = NO;
}];
[request setFailedBlock:^{
// show alert to user
isWorking = NO;
}];
[queue addOperation:request];
while (isWorking) {
[[NSRunLoop currentRunLoop] runUntilDate:[NSDate dateWithTimeIntervalSinceNow:0.1]];
}
同样,这似乎工作正常。使用这种方法是否有任何潜在问题?