iphone – 正在调用 – [NSRunLoop runUntilDate:]一个好主意?

iphone – 正在调用 – [NSRunLoop runUntilDate:]一个好主意?,第1张

概述调用通常是个好主意 – [NSRunLoop runUntilDate:]?它似乎没有任何问题,但它让我很紧张,告诉运行循环从运行循环内运行. 更多信息: 我现在有一个从REST服务获取数据的项目.需要获得的一个关键信息是具有有效数据的日期范围.这只是一小部分数据,只需要获取一次,所以我认为处理它的最佳方法是让属性在局部变量为零时下载数据.我正在使用ASIHTTPRequest和ASINetwor 调用通常是个好主意 – [NSRunLoop runUntilDate:]?它似乎没有任何问题,但它让我很紧张,告诉运行循环从运行循环内运行.

更多信息:

我现在有一个从REST服务获取数据的项目.需要获得的一个关键信息是具有有效数据的日期范围.这只是一小部分数据,只需要获取一次,所以我认为处理它的最佳方法是让属性在局部变量为零时下载数据.我正在使用ASIhttpRequest和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]];}

再次,这似乎工作得很好.使用这种方法有任何潜在的问题吗?

解决方法 除非重叠的调用树完全可重入,否则必须确保不要从正在调用的运行循环调用的任何方法中执行此 *** 作.

Cocoa touch UI代码没有记录为可重入(事实上,Apple DTS有警告/提示它不是),因此如果您的获取数据处理程序可以通过UI方法(或其他非方法)进行调用可以在UI运行循环中调用的-reentrant代码),不建议从内部调用UI运行循环.

总结

以上是内存溢出为你收集整理的iphone – 正在调用 – [NSRunLoop runUntilDate:]一个好主意?全部内容,希望文章能够帮你解决iphone – 正在调用 – [NSRunLoop runUntilDate:]一个好主意?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/web/1085921.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-05-27
下一篇2022-05-27

发表评论

登录后才能评论

评论列表(0条)

    保存