ユーザーにコンテンツを表示するアプリがあります。私は、ユーザーが実際にそのコンテンツを何秒間閲覧したかを調べたいと思います。だから、私のヘッダーファイルで、I'veを宣言しました。
NSDate *startTime;
NSDate *endTime;
そして、viewWillAppearで
startTime = [NSDate date];
次に、私のビューでWillDisappearが表示されます。
endTime = [NSDate date];
NSTimeInterval secs = [endTime timeIntervalSinceDate:startTime];
NSLog(@"Seconds --------> %f", secs);
しかし、アプリはクラッシュし、時々異なるエラーが発生します。あるときはメモリリーク、あるときはNSTimeIntervalの問題、そしてあるときは2回目にコンテンツに戻った後にクラッシュします。
これを修正するために何かアイデアはありますか?
開始日をretainしたプロパティを宣言する必要があります。時差を計算する前に、日付が解放されてしまいます。
そこで、次のように宣言します。
@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]);
}
クリーンアップを忘れずに。
- (void)dealloc
{
[self.startDate release];
[super dealloc];
}