ARC ile, ben artık yayın yapabilirsiniz CGColorRefiçin id. Köprülü bir kadro yapmam gerektiğini öğrendim. Clang belgelerine göre :
Bir köprülü dökme C tarzı dökme üç anahtar kelimelerden biriyle açıklamalı edilir:
(__bridge T) opişleneni hedef türüne çevirirT. EğerTbir retainable nesne işaretçisi türüdür, daha sonraop, bir sigara retainable işaretçi türü olmalıdır. EğerTolmayan bir retainable işaretçi türüdür, daha sonra op retainable nesne işaretçisi türü olmalıdır. Aksi takdirde alçı kötü şekillendirilir. Mülkiyet devri yoktur ve ARC tutma işlemleri eklemez.
(__bridge_retained T) opsaklanabilir nesne işaretçisi türüne sahip olması gereken işleneni, saklanamayan işaretçi türü olması gereken hedef türüne çevirir. ARC, yerel değerler üzerindeki olağan optimizasyonlara tabi olarak değeri korur ve alıcı + 1'in dengelenmesinden sorumludur.
(__bridge_transfer T) opsaklanamayan işaretçi türüne sahip olması gereken işleneni, saklanabilir nesne işaretçi türü olması gereken hedef türüne çevirir. ARC, yerel değerlerde olağan optimizasyonlara tabi olarak, çevreleyen tam ifadenin sonundaki değeri yayınlayacaktır.Bu kalıplar, ARC kontrolüne giren ve çıkan nesneleri aktarmak için gereklidir; korunabilir nesne işaretleyicilerinin dönüştürülmesine ilişkin bölümdeki gerekçeye bakın.
ARC'yi sırasıyla dengesiz bir alıkoyma veya serbest bırakmaya ikna etmek için a
__bridge_retainedveya__bridge_transfercast kullanılması zayıf formdur.
Her birini ne tür durumlarda kullanardım?
Örneğin, CAGradientLayerbir yer alır colorsbir dizi kabul özellik CGColorRefs. Tahminimce __brigeburada kullanmalıyım , ama tam olarak neden kullanmam (ya da etmemem) net değil.