[英]block in Swift : return error “ is not convertible to ”
我犯了一个错误,但看不到如何解决。 我想从GameScene加载所有资产,并以完成方式发送一个Bool。 我使用typealias:是否应该将两个文件(gameScene和gameController)重命名两次?
然后我在这行GameScene.loadSceneAssetsWithCompletionHandler{
上出现错误:
((Bool)-> Void)不能转换为'GameScene'
这是代码:
//gameController:
typealias OnComplete = (Bool) -> ()
override func viewDidLoad() {
super.viewDidLoad()
GameScene.loadSceneAssetsWithCompletionHandler{ (success:Bool)->Void in
println("2/ yes")
return
}
//gameScene : rewrite typealias?
typealias OnComplete = (Bool) -> ()
func loadSceneAssetsWithCompletionHandler( completion:OnComplete ) {
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_HIGH, 0), { () -> Void in
self.loadSceneAssets()
dispatch_async(dispatch_get_main_queue(), { () -> Void in
println("1/ yes")
completion(true)
})//main
})//global
}
我读了一些说要添加“返回”的线程,但是这里并不能解决错误。
谢谢
它几乎可以正常工作,但是您在这里遇到了一些错误。 首先,您不能重新声明typealias
。 第二,将loadSceneAssetsWithCompletionHandler
设置为实例函数时,将其作为类函数调用。 注意事项变更:
typealias OnComplete = (Bool) -> ()
class GameController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
GameScene.loadSceneAssetsWithCompletionHandler { success in
println("2/ yes")
return
}
}
}
class GameScene: UIViewController {
func loadSceneAssets() {
}
class func loadSceneAssetsWithCompletionHandler( completion:OnComplete ) {
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_HIGH, 0)) {
let gameScene = GameScene()
gameScene.loadSceneAssets()
dispatch_async(dispatch_get_main_queue()) {
println("1/ yes")
completion(true)
}
}
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.