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