2

NSTimerオブジェクトの動作が非常に奇妙です。

ChangePic2秒の繰り返しカウントでメソッドを呼び出そうとしていますが、タイマーが繰り返されていません。プロジェクトの1つのクラスでのみこの問題が発生します

アプリに5つのViewControllerがあり、これを除くすべてのクラスで同じコードが機能します。誰かがそれがどうなるか考えていますか?何かがタイマーをブロックしている可能性はありますか?

-ところで、ChangePicメソッドは1回だけ呼び出され、繰り返されません。

私のコード:

ViewController.h

@property (nonatomic, strong) NSTimer *timer;

ViewController.m

_timer = [NSTimer scheduledTimerWithTimeInterval:2.0 target:self selector:@selector(ChangePic) userInfo:nil repeats:YES];
[_timer fire];

-(void) ChangePic {
    NSLog(@"testing"); 
}
4

2 に答える 2

3

バッキング変数ではなく、プロパティに割り当てます。

self.timer = [NSTimer scheduledTimerWithTimeInterval:2.0 target:self selector:@selector(ChangePic) userInfo:nil repeats:YES];
于 2013-03-19T22:09:11.250 に答える
0

多くの背景が与えられていないため、あなたの問題が何であるかを正確に言うことは困難です. ビューの 1 つがタイマーをブロックしていたという事実が問題であることが判明した別の質問に回答したことをお伝えできます。タイマーはさまざまなモードで実行でき、さまざまなシナリオでタイマーがブロックされることがあります。次のように、すべての共通モードにタイマーを追加してみてください。

[[NSRunLoop currentRunLoop] addTimer:_timer forMode:NSRunLoopCommonModes];

また、@Hejazi が言ったように、「fire」メソッド呼び出しを削除します。スケジュールされたタイマーでは必要ありません。

于 2013-03-19T23:11:51.233 に答える