1

そのため、アプリケーションでアクションのタイミングを計るためにBrock Wolfsの回答を使用しています。実際のタイミングは、サーバーにリクエストを送信したときからです

NSURLConnection

そのリクエストからのすべてのデータのダウンロードが完了するまで、

connectionDidFinishLoading

ただし、何らかの奇妙な理由でこのソリューションが機能していないため、ブレークポイントを使用して実際のイベントに約 8 秒かかるにもかかわらず、0.00 秒で応答し続けます。

これはブロックのコードの私のバージョンです (正確なコピー)

タイマー.h

#import <Foundation/Foundation.h>

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

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


@end

タイマー.m

#import "Timer.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

次に、クラスで使用したい

myClass.h

#import "Timer.h"

Timer *timer;
//..
@property (strong, nonatomic) Timer *timer;

myClass.m

@synthesize timer;
//..

- (IBAction)vehicleSearchRequest:(NSData *)postBodyData
{
//..
[timer startTimer];

        NSURLConnection *theConnection=[[NSURLConnection alloc] initWithRequest:request delegate:self];

//..
}


- (void)connectionDidFinishLoading:(NSURLConnection *)connection
{
//..
[timer stopTimer]; // comes back as 0.000

        NSLog(@"Total time was: %lf milliseconds", [timer timeElapsedInMilliseconds]);
//..
}

どんな助けでも大歓迎です。

4

1 に答える 1

2

それが機能しない理由はまったく奇妙ではありません。Timerインスタンスを作成したことはありません。[timer timerStart]の直前にこの行を挿入します:

self.timer = [[Timer alloc] init];
于 2012-12-10T04:56:11.527 に答える