HTML5   发布时间:2022-04-27  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了ios – 有没有办法在代码中“等待……” – 就像一个空循环?大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
虑以下代码

[self otherstuff];
// "wait here..." until something finishes
while(!self@L_975_1@meFlag){}
[self morestuff];

请注意,这一切都发生在相同的线程上 – 我们不想转到另一个线程.

otherstuff可以做一些事情,比如连接到云,从用户那里获取输入等等,因此需要花费很多时间并且可以遵循许多可能的路径.

当otherstuff最终完成时,otherstuff会将self@L_975_1@meFlag设置为true.

这完全有效,它根本没有问题 – 除了用空循环烧毁处理器是蹩脚的!

很简单,有没有办法说出像…

halt here,until (some message,interrupt,flag,Boolean,whatever?)

而不仅仅是(!self@L_975_1@meFlag){}

(注意另一种方法是“@L_@R_674_11241@_8@”程序…所以在“otherstuff”结束时,你和所有其他程序员必须“只知道”你必须接下来调用“morestuff”,无论otherstuff如何播放当然,当你必须添加新程序或改变事情的顺序时,这是非常混乱的.)干杯!

便说一下,关于你想要不同线程的情况,下面已经有两个很好的答案.

解决方法

这是一个使用信号量的解决方案,小心不要引入死锁 – 你需要某种方式告诉你的应用程序已完成的事情,你可以像你建议的那样使用NsnotificationCentre这样做但是使用块更容易.

[self someOtherstuffWithCompletion:nil];

dispatch_semaphore_t semaphore = dispatch_semaphore_create(0);

[self someOtherstuffWithCompletion:^{
  dispatch_semaphore_signal(semaphorE);
}];

NSLog(@"waiTing");
dispatch_semaphore_wait(semaphore,DISPATCH_TIME_FOREVER);
NSLog(@"finished");

[self someOtherstuffWithCompletion:nil];

大佬总结

以上是大佬教程为你收集整理的ios – 有没有办法在代码中“等待……” – 就像一个空循环?全部内容,希望文章能够帮你解决ios – 有没有办法在代码中“等待……” – 就像一个空循环?所遇到的程序开发问题。

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

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。