gpt4 book ai didi

ios - 无法将类型 '()' 的值分配给类型 'CallbackBlock!'

转载 作者:行者123 更新时间:2023-11-28 15:45:56 25 4
gpt4 key购买 nike

当 GameViewController 中发生事件时,我正在尝试在 View Controller 中执行某些操作。

我就是这样做的

在 GameViewController 中

        typealias CallbackBlock = () -> Void

public class GameController {
var onAnagramSolved : CallbackBlock!


func inSomeMethod(){
self.onAnagramSolved()
}
}

在 View Controller 中

public class ViewController: UIViewController {

var gameController: GameController!


public override func loadView() {
super.loadView()

gameController = GameController()
}


override public func viewDidLoad() {
super.viewDidLoad()

// This is where I get the error (which is the title)
gameController.onAnagramSolved = self.showLevelMenu()

}



func showLevelMenu(){
// A method showing UIAlertController

}

但后来我得到错误提示

Cannot assign a value of type '()' to type 'CallbackBlock!'

它在 Swift 3 中。

最佳答案

尝试删除方法名称后的 ()。也就是说,改变这一行:

gameController.onAnagramSolved = self.showLevelMenu()

为此:

gameController.onAnagramSolved = self.showLevelMenu

第一个语法用于函数调用,另一个语法用于函数引用(即生成对给定函数的引用)。

一个更明确的选择是使用闭包代替:

gameController.onAnagramSolved = { self.showLevelMenu() }

关于ios - 无法将类型 '()' 的值分配给类型 'CallbackBlock!',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43057991/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com