swift - 不了解目标、#selector() 和 @objc 是如何在此代码中被错误使用的
问题描述
有人可以向我解释为什么这不起作用
class MyClass{
@objc func doSomething(){
print("I did something");
}
}
let timer = Timer.scheduledTimer(timeInterval: 1.0, target: MyClass, selector: #selector(doSomething), userInfo: nil, repeats: true)
- - 编辑 - - - -
发现这可以代替
let timer = Timer.scheduledTimer(timeInterval: 1.0, target: MyClass(), selector: #selector(MyClass.doSomething), userInfo: nil, repeats: false)
有人可以解释为什么目标需要是 MyClass() 而不是 MyClass 以及为什么它需要是 MyClass.doSomething 而不是 doSomething。因为我认为目标成为选择器的范围
解决方案
正确的代码
var timer : Timer?
func timerstarter(){
timer = Timer.scheduledTimer(timeInterval: 1.0, target: self, selector: #selector(doSomething), userInfo: nil, repeats: true)
}
@objc func doSomething(){
print("I did something");
}
推荐阅读
- apache-spark - Spark 应用程序卡在运行状态,初始作业未接受任何资源
- python - 从 numpy 数组转换为图像时获得意外的颜色输出
- sql - cmd安装后SQL Server进入单用户模式
- php - 如果日期相同,查询 BETWEEN 不起作用
- elasticsearch - 为什么我的映射有不受支持的参数?
- python - 2 个隐藏层神经网络上的反向传播
- c# - 解析 '\L' - 无法识别的转义序列
- android - 在地图上单击标记时打开一个新页面 [Android Studio]
- css - div 的高度未应用于容器
- angular - 如何通过pipe()->tap()添加一组模糊数据?