0

私は2つの時点の間の時間を取得しようとしています。何が間違っているのかわかりませんが、NSLogで「nan」の結果が表示されます。合計時間は:nan秒でした。ifステートメントから[timerstart]と[timerstop]を削除すると、通常の結果がdoubleになります。

- (void) filterFrequency {

Timer *timer = [[Timer alloc] init];
if (self.currentFrequency > 2000 && pointInTime % 2 == 0)

{
    [timer startTimer];
    pointInTime = pointInTime + 1;
}
 else if (self.currentFrequency > 2000 && pointInTime % 2 == 1)

{
    [timer stopTimer];
    pointInTime = pointInTime + 1;
    NSLog(@"Total time was: %f seconds", [timer timeElapsedInSeconds]);

}

これがTimer.h#importです

@interface Timer : NSObject {
NSDate *start;
NSDate *end;
}

- (void) startTimer;
- (void) stopTimer;
- (double) timeElapsedInSeconds;
- (double) timeElapsedInMilliseconds;
- (double) timeElapsedInMinutes;

@end

Timer.m

#import "Timer.h"
#import "ListenerViewController.h"

@implementation Timer

- (id) init {
self = [super init];
if (self != nil) {
    start = nil;
    end = nil;
}
return self;
}

- (void) startTimer {
start = [NSDate date];
}

- (void) stopTimer {
end = [NSDate date];
}

- (double) timeElapsedInSeconds {
return [end timeIntervalSinceDate:start];
}

- (double) timeElapsedInMilliseconds {
return [self timeElapsedInSeconds] * 1000.0f;
}

- (double) timeElapsedInMinutes {
return [self timeElapsedInSeconds] / 60.0f;
}

@end
4

1 に答える 1

0

次のコードを使用して、サウンドのロードに必要な時間を測定します。コードで何をしたいのか(そしてその理由)はわかりませんが、これは正確な時間測定に確かに役立ちます。

    // Setup:

    uint64_t tm_start,tm_end,tm_elapsed,tm_nanoSeconds,tm_milliSeconds,tm_seconds;
    mach_timebase_info_data_t info;

    // Start:
    tm_start = mach_absolute_time();    

    // do your stuff 

    // Example
    NSSound *cocoaAudioPlayerSound = [[NSSound alloc] initWithContentsOfFile:mediaLocation byReference:YES];
    // … time flies


    // End:
    tm_end = mach_absolute_time();
    tm_elapsed = tm_end - tm_start;
    mach_timebase_info(&info); 
    tm_nanoSeconds = tm_elapsed * info.numer / info.denom;
    tm_milliSeconds = tm_nanoSeconds / (1000000);
    tm_seconds = (tm_milliSeconds/1000);

#ifdef DEBUG
    fflush(stdout);
    printf ( "| allocateAudio: %5lld milliseconds (%5lld seconds) (%12lld nano seconds)\n", tm_milliSeconds, tm_seconds, tm_nanoSeconds );
#endif
于 2013-02-03T00:56:57.397 に答える