หากฉันตัดสินใจที่จะอัปเกรดเป็น iOS 5 ฉันจำเป็นต้องลบคำสั่ง [myObjectained] และ [myObject release] ทั้งหมดออกจากรหัสของฉันหรือไม่
ใช่ แต่ XCode 4.2 มีเครื่องมือ "Migrate to Objective-C ARC" ใหม่ (ในเมนู Edit-> Refactor) ซึ่งทำเพื่อคุณ การเรียก dealloc เป็นคนละเรื่อง ดังที่กล่าวไว้ในความคิดเห็นการอ้างอิงเสียงดังระบุว่าคุณควรใช้วิธีการ dealloc ของคุณ:
เหตุผล: แม้ว่า ARC จะทำลายตัวแปรอินสแตนซ์โดยอัตโนมัติ แต่ก็ยังมีเหตุผลที่ถูกต้องในการเขียนเมธอด dealloc เช่นการปลดปล่อยทรัพยากรที่ไม่สามารถเก็บรักษาได้ การไม่โทรหา [super dealloc] ในวิธีดังกล่าวมักจะเป็นข้อบกพร่อง
คุณเปิดใช้งาน ARC โดยใช้แฟล็กคอมไพเลอร์ -fobjc-arc ใหม่ ARC ได้รับการสนับสนุนใน Xcode 4.2 สำหรับ Mac OS X v10.6 และ v10.7 (แอปพลิเคชัน 64 บิต) และสำหรับ iOS 4 และ iOS 5 (ไม่รองรับการอ้างอิงที่อ่อนแอใน MacOS X v10.6 และ iOS 4) ไม่มีการรองรับ ARC ใน Xcode 4.1
-
หากฉันพัฒนาแอปใหม่สำหรับ iOS 5 โดยใช้ ARC ฉันจะต้องใช้การตรวจสอบ "ความเข้ากันได้ย้อนยุค" บางประเภทหรือไม่ เช่น: ฉันจะต้องตรวจสอบเวอร์ชันของ iOS และรักษาการโทรและปล่อยตามนั้นหรือไม่? โดยพื้นฐานแล้ว ARC สามารถใช้ได้กับ iOS ทุกเวอร์ชันหรือเฉพาะสำหรับ iOS 5?
ไม่เพราะ ARC ใช้เวทมนตร์ในการรวบรวมเวลาไม่ใช่ในเวลาทำงาน
แทนที่จะต้องจำว่าเมื่อใดควรใช้การเก็บรักษาการปล่อยและการปล่อยอัตโนมัติ ARC จะประเมินความต้องการตลอดอายุการใช้งานของออบเจ็กต์ของคุณและแทรกการเรียกใช้เมธอดที่เหมาะสมให้คุณโดยอัตโนมัติในเวลาคอมไพล์ คอมไพเลอร์ยังสร้างวิธีการ dealloc ที่เหมาะสมสำหรับคุณ
ข้อมูลเพิ่มเติมเกี่ยวกับ ARC: http://clang.llvm.org/docs/AutomaticReferenceCounting.html