Perbedaan antara 2 tanggal dalam hitungan detik ios

Saya memiliki sebuah aplikasi di mana konten akan ditampilkan kepada pengguna. Sekarang saya ingin mengetahui berapa banyak detik yang pengguna benar-benar pemandangan yang konten untuk. Jadi dalam file header, I've menyatakan

 NSDate *startTime;
 NSDate *endTime;

Kemudian saya viewWillAppear

 startTime = [NSDate date];

Kemudian saya viewWillDisappear

endTime = [NSDate date];
NSTimeInterval secs = [endTime timeIntervalSinceDate:startTime];
NSLog(@"Seconds --------> %f", secs);

Namun, aplikasi crash, dengan berbagai kesalahan kadang-kadang. Kadang-kadang itu's kebocoran memori, kadang-kadang itu's masalah dengan NSTimeInterval, dan kadang-kadang crash setelah kembali ke konten untuk kedua kalinya.

Ada ide untuk memperbaiki hal ini?

Mengomentari pertanyaan (4)
Larutan

karena anda tidak menggunakan ARC, ketika anda menulis

startTime = [NSDate tanggal];

anda tidak mempertahankan startTime, jadi deallocated sebelum -viewWillDisappear disebut. Mencoba

startTime = [[NSDate tanggal] mempertahankan];

Juga, saya sarankan untuk menggunakan BUSUR. Harus ada jauh lebih sedikit kesalahan dengan manajemen memori dengan itu, daripada tanpa itu

Komentar (0)

Anda harus mendeklarasikan properti dengan mempertahankan untuk memulai upload. Kencan anda mendapatkan dirilis sebelum anda dapat menghitung perbedaan waktu.

Jadi menyatakan

@property (nonatomic, retain) NSDate *startDate

- (void)viewWillAppear:(BOOL)animated
{
    [super viewWillAppear:animated];
    [self setStartDate: [NSDate date]];
}

- (void)viewWillDisappear:(BOOL)animated
{
     [super viewWillDisappear:animated];
     NSLog(@"Seconds --------> %f",[[NSDate date] timeIntervalSinceDate: self.startDate]);
}

Don't lupa untuk pembersihan.

- (void)dealloc
{
    [self.startDate release];
    [super dealloc];
}
Komentar (0)