很抱歉,如果这个问题问了很多遍,我尝试了许多解决方案,但对我来说却没有任何工作。我正在做这样的非常基本的事情。
class NotificationModel: NSObject {
var selector = (() -> Void).self
}
其他班级。
class TestNotificationClass1 {
init() {
var model = NotificationModel.init()
model.selector = handleNotification //error is here
}
func handleNotification() -> Void {
print("handle function 1")
}
}
错误描述:不能将类型为(()-> Void'的值分配为类型为((()-> Void).Type'
答案 0 :(得分:2)
如果您希望selector
能够保留没有参数且没有返回值的任何函数,则将其声明更改为:
var selector: (() -> Void)?
这也使其成为可选。如果您不希望它是可选的,则需要向NotificationModel
添加一个初始化器,该初始化器将所需的选择器作为参数,如下所示:
class NotificationModel: NSObject {
var selector: (() -> Void)
init(selector: @escaping () -> Void) {
self.selector = selector
super.init()
}
}
class TestNotificationClass1 {
init() {
var model = NotificationModel(selector: handleNotification)
}
func handleNotification() -> Void {
print("handle function 1")
}
}