了解如何在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);
}
答案 0 :(得分:1)
不,Swift目前不支持 Unity/C# style coroutines (即yield return
样式结构)。顺便说一句,这样的功能非常酷; - )
话虽如此,您可能需要查看Async framework中的某个有效替代方案(如果您真的在寻找异步/等待抽象):
Swift中的语法糖,用于Grand Central Dispatch中的异步调度
对于Swift本机支持,我们可能需要wait for Swift ≥ 5来获取类似的内容:
Actors,async / await,atomicity,memory model和相关主题。这个区域是每个人都非常需要的,因为它将为客户端,服务器等各种新事物敞开大门。我们计划在第2阶段开始对此进行正式讨论,但不幸的是,很明显,Swift 4版本不会及时完成新的并发模型。这仅仅是因为设计和构建需要12个月以上,我们希望确保花时间做正确的事。在开始使用它之前,更好地理解内存所有权模型也是有意义的。