1

次のようにタイマーを使用してオブジェクトを呼び出しています。

NSTimer *mainTimer = [NSTimer scheduledTimerWithTimeInterval:1
                                                      target:thisTimer
                                                    selector:@selector(increaseSeconds)
                                                    userInfo:nil
                                                     repeats:YES];

やりたいことは、関数increaseSecondsを呼び出したオブジェクトのプロパティを設定することです。このようなもの:

  - (void)increaseSeconds {
       parent.label.text = whatever....;    
    }
4

2 に答える 2

0

「thisTimer」オブジェクトを作成するときに、「initWithParent:」メソッドを使用するのが最も簡単な方法のようです。

于 2012-09-14T01:51:47.220 に答える
0

ここでの混乱は、これを行うことができたとしても (実際には効果的ではありません)、「それを呼び出したオブジェクト」が または のいずれNSTimerNSRunLoopであり、これはおそらくあなたが意図したものではないということです。おそらくあなたが考えているオブジェクトの1つにそれを接続する方法はありません. タイマーを見ると、発信者を登録していません。

ここで で使用できるテクニックがありますNSTimer。最も明白なのは、呼び出し元をuserInfo辞書に格納することです。それがそのためです。しかし、私はあなたがあなたのデザインを再考する必要があるのではないかと疑っています. NSTimertargetはないを作成することは非常にまれでselfあり、責任が間違って割り当てられていることを示唆しています。Cocoa 用に設計するときは、 MVCを十分に理解していることを確認してください。

于 2012-09-14T03:08:21.667 に答える