0

私は NSTimers に非常に問題があります。以前に使用したことがありますが、このタイマーは起動したくありません。

-(void) enqueueRecordingProcess
{
    NSLog(@"made it!");
    NSTimer *time2 = [NSTimer scheduledTimerWithTimeInterval:1.0 target:self selector:@selector(warnForRecording) userInfo:nil repeats:YES];

}

-(void) warnForRecording
{
    NSLog(@"timer ticked!");
    if (trv > 0) {
        NSLog(@"Starting Recording in %i seconds.", trv);
    }
}

これが実行されない理由がわかりません。私もこれを試しました:

- (void)enqueueRecordingProcess
{
    NSLog(@"made it!");
    [NSTimer scheduledTimerWithTimeInterval:1.0 target:self selector:@selector(warnForRecording) userInfo:nil repeats:YES];
}

 - (void)warnForRecording
{
    NSLog(@"timer ticked!");
}

なにが問題ですか?

4

3 に答える 3

2

これで修正されるかどうかはわかりませんが、ドキュメントから:

The message to send to target when the timer fires. The selector must have the following signature:
- (void)timerFireMethod:(NSTimer*)theTimer
The timer passes itself as the argument to this method.
于 2012-06-03T23:38:33.950 に答える
0
// Yes.  Here is sample code (tested on OS X 10.8.4, command-line).
// Using ARC:
// $ cc -o timer timer.m -fobjc-arc -framework Foundation
// $ ./timer
//

#include <Foundation/Foundation.h>

@interface MyClass : NSObject
@property NSTimer *timer;
-(id)init;
-(void)onTick:(NSTimer *)aTimer;
@end

@implementation MyClass
-(id)init {
    id newInstance = [super init];
    if (newInstance) {
        NSLog(@"Creating timer...");
        _timer = [NSTimer scheduledTimerWithTimeInterval:1.0
            target:self
            selector:@selector(onTick:)
            userInfo:nil
            repeats:YES];
    }
    return newInstance;
}

-(void)onTick:(NSTimer *)aTimer {
    NSLog(@"Tick");
}
@end

int main() {
    @autoreleasepool {
        MyClass *obj = [[MyClass alloc] init];
        [[NSRunLoop currentRunLoop] run];
    }
    return 0;
}
于 2013-06-13T04:00:14.967 に答える
0

詳細についてはわかりませんが、タイマーを含むイベントを取得するには、ランループを処理する必要があります。

于 2012-06-04T04:12:19.673 に答える