invalidatescheduleTimerWithTimeInterval:target:selector:userInfo:repeats: が提供する NSTimerにメッセージを送信する必要があります。たとえば、クラスのプロパティまたは iVar でメソッドが返す NSTimer を割り当て、10 秒後invalidateにそれを呼び出します。
例:
.h:
@interface myClass{
NSTimer *myT;
}
[...]
.m:
[...]
{
myT = [NSTimer scheduledTimerWithTimeInterval:0.5 target:self selector:@selector(getLevel:) userInfo:nil repeats: YES];
[NSTimer scheduledTimerWithTimeInterval:10 target:self selector:@selector(stop) userInfo:nil repeats:NO];
}
-(void)stop{
[myT invalidate];
}
[...]
NSTimer必要に応じて、何らかのfinishフラグを実装し、メソッドにメッセージを送信した回数を追跡することで、別のメッセージを回避できgetLevelます。これは 0.5 秒ごとであるため、20 回になります。
しかしNSTimer、他のタイマーに関係なく10秒であることを知っているので、オブジェクトを2つにしたいと思います。これは、周波数を上下に変更する可能性があります...