それ自身を指し示すセレクタを持つより多くのクラスに対して、再利用可能なプロトコル拡張を行うためのソリューションはありますか? たとえば、と連携する適切な機能を追加する拡張子TimerHelper
を作成しようとしています。私はこれが見つかりました:私はもちろん、動作しない、コードで作るしようとしています何再利用可能なSwiftエクステンションとセレクタ
...
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()
}
}
おかげ
は意味しませんか?特にエラーはありますか? – Harris
エラーは文字どおり残念です: '引数タイプ 'Self'は予想されるタイプ 'Anyobject'に適合しません。 'しかし、私の意見では、この現在のエラーは重要ではありません - より多くの状況では、私は、他の例などを見つけました。このコードは、私の考えを説明するためのものでした。とにかくありがとう –