ด้วย ARC ฉันไม่สามารถเลือกใช้อีกต่อCGColorRefไปidได้ ฉันเรียนรู้ว่าฉันต้องทำนักแสดงที่เชื่อมโยง ตามเอกสารดังกราว :
หล่อสะพานเป็น C- โยนสไตล์ข้อเขียนกับหนึ่งในสามคำ:
(__bridge T) opTปลดเปลื้องตัวถูกดำเนินการประเภทปลายทาง หากTเป็นประเภทตัวชี้วัตถุที่คงไว้ได้นั้นopจะต้องมีประเภทตัวชี้ที่ไม่สามารถเก็บรักษาได้ ถ้าTเป็นประเภทพอยน์เตอร์ที่ไม่สามารถเก็บถาวรได้ op จะต้องมีประเภทพอยน์เตอร์ของวัตถุที่คงอยู่ได้ มิฉะนั้นนักแสดงจะหล่อขึ้นมา ไม่มีการถ่ายโอนความเป็นเจ้าของและ ARC จะไม่มีการดำเนินการเก็บรักษาไว้
(__bridge_retained T) opปลดเปลื้องตัวถูกดำเนินการซึ่งจะต้องมีประเภทตัวชี้วัตถุที่เก็บรักษาไว้กับประเภทปลายทางซึ่งจะต้องเป็นประเภทตัวชี้ที่ไม่สามารถเก็บรักษาได้ ARC จะรักษาค่าไว้โดยขึ้นอยู่กับการปรับค่าตามปกติตามปกติและผู้รับจะรับผิดชอบในการปรับสมดุล +1 นั้น
(__bridge_transfer T) opปลดเปลื้องตัวถูกดำเนินการซึ่งจะต้องมีประเภทตัวชี้ที่ไม่สามารถเก็บรักษาไว้กับประเภทปลายทางซึ่งจะต้องเป็นประเภทตัวชี้วัตถุที่รักษาได้ ARC จะปล่อยค่าในตอนท้ายของนิพจน์แบบปิดล้อมซึ่งขึ้นอยู่กับการเพิ่มประสิทธิภาพตามปกติของค่าท้องถิ่นการปลดเปลื้องเหล่านี้จำเป็นต้องมีเพื่อถ่ายโอนวัตถุเข้าและออกจากการควบคุม ARC; ดูเหตุผลในส่วนการแปลงของพอยน์เตอร์พอยน์เตอร์ที่เก็บได้
การใช้
__bridge_retainedหรือ__bridge_transferโยนเพื่อโน้มน้าวใจ ARC ให้ปล่อยการเก็บหรือปล่อยที่ไม่สมดุลตามลำดับเป็นรูปแบบที่ไม่ดี
ในสถานการณ์แบบใดฉันจะใช้แต่ละสถานการณ์
ตัวอย่างเช่นCAGradientLayerมีcolorsคุณสมบัติที่รับอาร์เรย์ของCGColorRefs ฉันเดาว่าฉันควรใช้__brigeที่นี่ แต่ทำไมฉันควร (หรือไม่ควร) ไม่ชัดเจน