ฉันกำลังพยายามเรียนรู้การนับอ้างอิงอัตโนมัติใน iOS 5 ตอนนี้ส่วนแรกของคำถามนี้น่าจะง่าย:
ถูกต้องหรือไม่ที่ฉันไม่จำเป็นต้องเขียนคำสั่ง release-property อย่างชัดเจนใน dealloc ของฉันเมื่อใช้ ARC กล่าวอีกนัยหนึ่งเป็นความจริงหรือไม่ว่าสิ่งต่อไปนี้ไม่จำเป็นต้องมี dealloc ที่ชัดเจน?
@interface MyClass : NSObject @property (strong, nonatomic) NSObject* myProperty; @end @implementation MyClass @synthesize myProperty; @end
คำถามถัดไปและที่สำคัญกว่าของฉันมาจากบรรทัดในเอกสารการเปลี่ยนไปใช้ ARC Release Notes :
คุณไม่จำเป็นต้องปล่อยตัวแปรอินสแตนซ์ แต่คุณอาจต้องเรียกใช้ [self setDelegate: nil] ในคลาสระบบและโค้ดอื่น ๆ ที่ไม่ได้คอมไพล์โดยใช้ ARC
สิ่งนี้ทำให้เกิดคำถาม: ฉันจะรู้ได้อย่างไรว่าคลาสระบบใดที่ไม่ได้คอมไพล์กับ ARC เมื่อใดที่ฉันควรสร้าง dealloc ของตัวเองและตั้งค่าอย่างชัดเจนเพื่อรักษาคุณสมบัติให้เป็นศูนย์ ฉันควรถือว่าคลาสเฟรมเวิร์ก NS และ UI ทั้งหมดที่ใช้ในคุณสมบัติจำเป็นต้องใช้เอกสารที่ชัดเจนหรือไม่
มีข้อมูลมากมายเกี่ยวกับ SO และที่อื่น ๆ เกี่ยวกับแนวทางปฏิบัติในการปล่อย ivar สำรองของคุณสมบัติเมื่อใช้การติดตามอ้างอิงด้วยตนเอง แต่ค่อนข้างน้อยเกี่ยวกับเรื่องนี้เมื่อใช้ ARC
MyController : UIViewController
คลาสที่สร้างและเป็นเจ้าของ UIView และยังตั้งค่าผู้แทนของมุมมองให้กับตัวเอง เป็นเจ้าของข้อมูลพร็อพเพอร์ตี้ดังกล่าว แต่เพียงผู้เดียว เมื่อคอนโทรลเลอร์ได้รับการยกเลิกการจัดสรรมุมมองก็ควรได้รับการลดการปันส่วน แล้วตัวชี้ผู้รับมอบสิทธิ์จะห้อยหรือไม่?