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?
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
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];
}