【发布时间】:2016-05-25 09:40:37
【问题描述】:
是否存在任何解决方案来为更多具有指向自身的选择器的类进行可重用的协议扩展?
例如,我正在尝试制作扩展 TimerHelper,它添加了与 NSTimer 一起使用的适当功能。我发现了这个:
https://forums.developer.apple.com/thread/26983
https://forums.developer.apple.com/message/49465#49465
但解决方案似乎有点曲折......
我想用代码做的,当然是行不通的,是这样的:
protocol TimerHelper {
var timer:NSTimer { get set }
}
extension TimerHelper {
func startTimer() {
timer = NSTimer.scheduledTimerWithTimeInterval(1, target: self, selector: self.updateTimer(), userInfo: nil, repeats: true)
}
func updateTimer() {
print("Timer updated.")
}
}
class ViewController: UIViewController, TimerHelper {
var timer: NSTimer = NSTimer()
func start() {
startTimer()
}
}
谢谢
【问题讨论】:
-
不起作用是什么意思?有没有具体的错误?
-
我很抱歉错误是字面意思:
Argument type 'Self' does not conform to expected type 'Anyobject'.但在我看来,这个当前的错误并不重要 - 根据我发现的帖子或其他示例等,我尝试了更多情况下的错误。这段代码应该只是为了说明我的想法。还是谢谢