看看如何在Swift 3中构建类似的东西。
我习惯于在Unity3d中使用这种架构,也许没有任何类似的东西来处理异步数据。我听说过完成块+使用协议/委托在Swift中传递数据,但我认为有一个获取数据的公共函数,然后使用协同线来等待所有数据都在VC中启动,这样会更容易。
下面是我用来创建它们的C#代码:
List<Int> data = new List<Int>;
private IENumerator get_data()
{
run_async_func_to_get_data();
while(data.count == 0)
{
yield return null;
}
yield break;
}
private IENumerator start_game()
{
yield return get_data();
yield return use_data();
}
void Start()
{
StartCoroutine(start_game);
}发布于 2017-04-19 20:37:12
不,Swift目前不支持https://msdn.microsoft.com/en-us/library/9k7k7cf0.aspx (即yield return样式构造)。顺便说一句,这样的功能相当酷;-)
话虽如此,您可能希望在异步框架中寻找一个比较有效的替代方案(如果您真的在寻找异步/等待抽象):
中央调度异步调度中的语法糖
至于Swift本机支持,我们可能需要等待Swift≥5来实现这样的功能:
参与者、异步/等待、原子性、内存模型和相关主题。这个领域是每个人都非常渴望的,因为它将为客户端、服务器和更多方面的各种新事物打开大门。我们计划在第二阶段开始关于这个问题的正式讨论,但不幸的是,很明显,一个新的并发模型不会在Swift 4发布之前完成。这仅仅是因为它将需要超过12个月的时间来设计和建造,我们想要确保花时间去做正确的事情。在开始之前,更好地理解内存所有权模型也是有意义的。
https://stackoverflow.com/questions/43505101
复制相似问题