ในฐานะที่เป็นโปรแกรมเมอร์ iPhone เริ่มต้นแนวทางปฏิบัติที่ดีที่สุดในการเขียนแอพเพื่อใช้กับ iOS 5 หรือเวอร์ชันเก่ากว่าคืออะไร โดยเฉพาะอย่างยิ่งฉันควรใช้การเผยแพร่ / การเก็บรักษาข้อมูลต่อไปหรือฉันควรเพิกเฉยต่อสิ่งนั้น มันสำคัญหรือไม่?
ในฐานะที่เป็นโปรแกรมเมอร์ iPhone เริ่มต้นแนวทางปฏิบัติที่ดีที่สุดในการเขียนแอพเพื่อใช้กับ iOS 5 หรือเวอร์ชันเก่ากว่าคืออะไร โดยเฉพาะอย่างยิ่งฉันควรใช้การเผยแพร่ / การเก็บรักษาข้อมูลต่อไปหรือฉันควรเพิกเฉยต่อสิ่งนั้น มันสำคัญหรือไม่?
คำตอบ:
มันขึ้นอยู่กับคุณ. คุณสามารถเขียนแอปโดยใช้ ARC (Automatic Reference Counting) และ Xcode จะเขียน "glue code" เพื่อให้แอปที่เปิดใช้งาน ARC ของคุณทำงานบน iOS 4 ได้โดยไม่จำเป็นต้องแก้ไข อย่างไรก็ตามบางสิ่งไม่สามารถใช้งานได้และไลบรารีจำนวนมากที่คุณอาจต้องการใช้ (บางครั้ง) จะทำให้เกิดข้อผิดพลาดมากมายและคุณจะไม่สามารถใช้งานได้จนกว่านักพัฒนาจะปล่อยการอัปเดตที่เข้ากันได้กับ ARC
แก้ไข : ฉันเพิ่งค้นพบว่าคุณสามารถปิด ARC ทีละไฟล์ได้ ดูpixelfreakคำตอบ 's ดังนั้นคำแนะนำของฉันยังคงมีอยู่ แต่ตอนนี้ห้องสมุดบุคคลที่สามไม่จำเป็นต้องได้รับการอัปเดตเพื่อทำงานกับ ARC
นี่คือสิ่งที่ Apple กล่าวเกี่ยวกับการเลือกไม่ใช้ ARC สำหรับไฟล์บางไฟล์:
เมื่อคุณโอนย้ายโปรเจ็กต์เพื่อใช้ ARC แฟล็กคอมไพเลอร์ -fobjc-arc จะถูกตั้งค่าเป็นค่าดีฟอลต์สำหรับไฟล์ต้นทาง Objective-C ทั้งหมด คุณสามารถปิดใช้งาน ARC สำหรับคลาสเฉพาะโดยใช้แฟล็กคอมไพเลอร์ -fno-objc-arc สำหรับคลาสนั้น ใน Xcode ในแท็บ Build Phases เป้าหมายให้เปิดกลุ่ม Compile Sources เพื่อแสดงรายการไฟล์ต้นฉบับ ดับเบิลคลิกไฟล์ที่คุณต้องการตั้งค่าแฟล็กป้อน -fno-objc-arc ในแผงป๊อปอัปจากนั้นคลิกเสร็จสิ้น
-fno-objc-arc
JSONKit
ยกตัวอย่างเช่น ลองเรียกใช้ผ่านการตรวจสอบ ARC คุณจะเห็นว่าฉันหมายถึงอะไร ;)
สำหรับใครที่ยังสงสัยเกี่ยวกับวิธีปิด ARC ในแต่ละไฟล์นี่คือสิ่งที่ฉันทำ:
Build Phases > Compile Sources
ฉันไม่รู้ว่านี่เป็นวิธีที่แนะนำหรือเปล่า แต่ใช้ได้กับฉัน
PS: ฉันรวบรวมข้อมูลนี้จาก clang.llvm.org ที่นี่ซึ่งสามารถเข้าถึงได้โดยสาธารณะดังนั้นจึงไม่อยู่ภายใต้ NDA
iOS 5 ยังคงอยู่ภายใต้ NDA และอาจถึงเวลาปล่อยเวอร์ชันสาธารณะ หากคุณมีบัญชีนักพัฒนาให้ไปที่ฟอรัมนักพัฒนาของ Appleแล้วถามที่นั่น
สำหรับเวอร์ชันก่อนหน้าคุณต้องนับการอ้างอิงและเก็บรักษาและเผยแพร่ตามนั้น ตรวจสอบคู่มือจัดการหน่วยความจำ
แก้ไข:นี่คือข้อมูลจำเพาะสาธารณะสำหรับการนับอ้างอิงอัตโนมัติและคำพูดจากหน้าiOS 5 สาธารณะ :
Automatic Reference Counting (ARC) สำหรับ Objective-C ทำให้การจัดการหน่วยความจำเป็นงานของคอมไพเลอร์ ด้วยการเปิดใช้งาน ARC ด้วยคอมไพเลอร์ Apple LLVM ใหม่คุณจะไม่ต้องพิมพ์คำว่าเก็บหรือรีลีสอีกครั้งทำให้ขั้นตอนการพัฒนาง่ายขึ้นอย่างมากในขณะที่ลดข้อขัดข้องและการรั่วไหลของหน่วยความจำ คอมไพเลอร์มีความเข้าใจอย่างถ่องแท้เกี่ยวกับออบเจ็กต์ของคุณและเผยแพร่แต่ละออบเจ็กต์ทันทีที่ไม่ได้ใช้งานอีกต่อไปดังนั้นแอพต่างๆจึงทำงานได้เร็วที่สุดเท่าที่เคยมีมาพร้อมประสิทธิภาพที่ราบรื่นและคาดเดาได้
ในขณะนี้รายละเอียดอาจไม่ชัดเจน / อยู่ภายใต้ NDA แต่ Apple ได้ใช้ Automatic Reference Counting (ARC) ใน iOS 5 ตามรายละเอียดที่นี่: http://developer.apple.com/technologies/ios5/
หากคุณพัฒนาแอปใหม่ใน Xcode 4 ด้วย iOS 5 SDK คุณสามารถละเว้นการนับการคง / การเผยแพร่ได้อย่างปลอดภัย
[แก้ไข] sudo rm -rf เป็นจุดที่ดี Libs ของบุคคลที่สามอาจได้รับผลกระทบอย่างมีนัยสำคัญ
ไม่มีใครกล่าวถึงSystemConfiguration.framework ? โปรดอย่าลืมที่จะใส่ลงในกรอบ ฉันใช้เวลาหลายชั่วโมงอย่างน่าสังเวชในการตระหนักถึงมัน
เป็นทางเลือกของผู้พัฒนาหรือทีมงานอย่างแน่นอน ARC (ตัวนับอ้างอิงอัตโนมัติ) ทำให้สิ่งต่างๆง่ายขึ้นเล็กน้อยด้วยการจัดการหน่วยความจำให้คุณโดยอัตโนมัติ มันจะปล่อยกักเก็บและ dealloc ตามความเหมาะสม ฉันเชื่อว่าคุณควรได้รับประสบการณ์การจัดการหน่วยความจำด้วยตัวเองโดยเฉพาะอย่างยิ่งในแอปพลิเคชันทดสอบหากคุณยังไม่ได้ทำ สิ่งที่ควรพิจารณาอีกประการหนึ่งคือแอปพลิเคชันของคุณอาศัยไลบรารีของบุคคลที่สามหรือไม่ซึ่งหากไม่แปลงเป็น ARC จะทำให้แอปพลิเคชันของคุณไม่สามารถรวบรวมได้ ทางเลือกขึ้นอยู่กับสถานการณ์ในมืออย่างชัดเจน
ตั้งค่าสถานะเป็น -fno-objc-arc ในการตั้งค่าโปรเจ็กต์> สร้างเฟส> แหล่งที่มาของคอมไพล์