0

クォーツでの描画に関して、最後からアップルのビデオを見ていました。スピーカーは、システムがキャッシュを処理できるように、CGGradientRefをivarに保存する必要があると述べました。だから私の最初の質問は、それはどのように機能するのかということです。グラデーションがそのオブジェクトに対して一度作成され、オブジェクトが再度作成されない限り、二度と作成されないという理由だけですか?

また、グラデーションはどこでリリースしますか?あなたはdeallocの他のivarsのようにそれをリリースしますか?

.h
@property (nonatomic, readonly) CGGradientRef gradient;

.m
- (CGGradientRef)gradient {
    if (NULL == _gradient) {
        CGColorSpaceRef rgb = CGColorSpaceCreateDeviceRGB();
        _gradient = CGGradientCreateWithColors(rgb, (CFArrayRef)[NSArray arrayWithObjects:(id)[[UIColor colorWithRed:28./255 green:160./255 blue:255./255 alpha:1] CGColor], (id)[[UIColor colorWithRed:11./255 green:67./255 blue:107./255 alpha:1] CGColor], nil], nil);
        CGColorSpaceRelease(rgb);
    }
    return _gradient;
}

CGGradientRefはどこでリリースできますか?ありがとう!

4

1 に答える 1

0

簡単な検索で、私はこれを見つけました:

https://stackoverflow.com/a/8032905

リターンの前にこれを追加してください:

[(id)result autorelease];
于 2012-06-28T08:33:43.733 に答える