1

関数内に、メンバー変数である日付のコピーを保持するローカル変数があります。コードの上部には、_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;
        .
        .
        .
        .   
    });
});
4

1 に答える 1