関数内に、メンバー変数である日付のコピーを保持するローカル変数があります。コードの上部には、_date に対する保護がありません。
if (!_date) return;
NSDate *date = [[_date copy] autorelease];
ブロックで使用される機能日付の下位。
ただし、ブロック内で (まれに) 日付が nil になることがあります。これを行う関数には、リリース日への他の呼び出しはありません。何が起こったのか説明できる人はいますか?
コードサンプルはこちら:
NSDate *date = [[_date copy] autorelease];
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
// Cache Label Image
NSDateFormatter *weekday = [[[NSDateFormatter alloc] init] autorelease];
//Name of day label
UILabel *nameOfDay = [[[UILabel alloc] initWithFrame:CGRectZero] autorelease];
[weekday setDateFormat: @"EEE"];
nameOfDay.text = [weekday stringFromDate:date];
[nameOfDay sizeToFit];
// Draw it on background thread using ImageContext
dispatch_async(dispatch_get_main_queue(), ^{
if(![date isEqualToDate:_date])
return;
.
.
.
.
});
});