[解決済み] YクラスのオブジェクトXはSwiftでmethodSignatureForSelectorを実装していない
2023-03-27 11:50:54
質問
Personというクラスがあり、このクラスは複数回インスタンス化され、各個人が独自のタイマーを取得します。私の
init
に対して
Person
を呼び出します。
startTimer()
.
class Person {
var timer = NSTimer()
func startTimer() {
timer = NSTimer.scheduledTimerWithTimeInterval(1, target: self, selector: Selector("timerTick"), userInfo: nil, repeats: true)
}
func timerTick() {
angerLevel++
println("Angry! \(angerLevel)")
}
...
...
}
の配列に3つのPersonのインスタンスがあることになります。
Person[]
. 私はエラーが発生します。
2014-06-25 13:57:14.956 ThisProgram[3842:148856] *** NSForwarding: warning: object 0x113760048 of class '_TtC11ThisProgram6Person' does not implement methodSignatureForSelector: -- trouble ahead
を継承すべきであると他のところで読みました。
NSObject
を継承する必要があると他のところで読みましたが、これはObj-CではなくSwiftでの話です。関数はクラス内にあるので、私は何をすべきかわかりません。
どのように解決するのですか?
を考えてはいけません。
NSObject
をObjective-Cのクラスとして考えるのではなく、Cocoa/Foundationのクラスとして考えてください。Objective-Cの代わりにSwiftを使用しているとしても、あなたはまだすべての同じフレームワークを使用しているのです。
2つのオプションがあります。(1)
dynamic
属性を、セレクタとして参照したい関数に追加する。
dynamic func timerTick() {
self.angerLevel++
print("Angry! \(self.angerLevel)")
}
または、(2)
Person
のサブクラスとして
NSObject
のサブクラスとして定義した場合、単に
super.init()
を初期化子の先頭で呼び出せばよい。
class Person: NSObject {
var timer = NSTimer()
var angerLevel = 0
func startTimer() {
print("starting timer")
timer = NSTimer.scheduledTimerWithTimeInterval(1, target: self, selector: "timerTick", userInfo: nil, repeats: true)
}
func timerTick() {
self.angerLevel++
print("Angry! \(self.angerLevel)")
}
override init() {
super.init()
self.startTimer()
}
}
関連
-
[解決済み] dispatch_after - GCD in Swift?
-
[解決済み] Swift言語におけるエクスクラメーションマークの意味とは?
-
[解決済み] Swiftでindexとelementでループを反復させる方法
-
[解決済み] Swiftで乱数を生成する方法とは?
-
[解決済み] Swiftのクラスにおける静的関数/変数とクラス関数/変数?
-
[解決済み] SwiftでStringのサブストリングはどのように動作するか
-
[解決済み] swiftにStringのtrimメソッドはありますか?
-
[解決済み] Swiftで範囲を作成する方法は?
-
[解決済み] SwiftUIのForEachでインデックスを取得する
-
[解決済み] SwiftUIでビューを動的に隠す
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] Swiftで警告を消すには?
-
[解決済み] SHA256 in swift
-
[解決済み] Swift- Remove Push Notification Badge number?
-
[解決済み] カスタムイニシャライザを持つSwift enumはrawValueイニシャライザを失う
-
[解決済み] Swiftで失敗しないイニシャライザーを実装するためのベストプラクティス
-
[解決済み] Swiftの網羅的なSwitchステートメントのためのNoop
-
[解決済み] SwiftUI のテキストのフォントサイズをカスタマイズする
-
[解決済み] XcodeでFirebase Analyticsをオンにする
-
[解決済み] Swiftで乱数を生成する
-
[解決済み] SwiftUIでリストの背景色を変更するには?