1

私はまだARCとブリッジキャストに慣れています。CGColor に関するドキュメントでこれを見ました

コンパイラは、Cocoa メソッドから返された CF オブジェクトを処理します コンパイラは、Core Foundation 型を返す Objective-C メソッドを理解し、歴史的な Cocoa 命名規則に従います (Advanced Memory Management Programming Guide を参照)。たとえば、コンパイラは、iOS では、UIColor の CGColor メソッドによって返される CGColor が所有されていないことを認識しています。次の例に示すように、適切な型キャストを引き続き使用する必要があります。

NSMutableArray *colors = [NSMutableArray arrayWithObject:(id)[[UIColor darkGrayColor] CGColor]];
[colors addObject:(id)[[UIColor lightGrayColor] CGColor]];

だから私のコードでは、私はこれを試しました:

gradientLayer.backgroundColor = (id)([UIColor clearColor].CGColor));

ARC に関するコンパイラの警告が表示され、ブリッジ キャストを使用する必要がありました。理由はまだわかりません。「Fix-It」をクリックすると、次のようになりました。

gradientLayer.backgroundColor = (__bridge CGColorRef)((__bridge id)([UIColor clearColor].CGColor));

わかりません。これは何を意味するのでしょうか?ありがとう!

4

1 に答える 1

6

そのまま使用するgradientLayer.backgroundColor = [UIColor clearColor].CGColor;だけ.CGColorですCGColorRef。最後のコードは、a から aCGColorRefへのキャストidとその逆のキャストを行いました。

于 2012-09-20T06:03:21.097 に答える