Saya mulai mengembangkan aplikasi iOS pertama saya dengan Xcode 4.2, dan menargetkan iOS 5.0 dengan template "aplikasi utilitas" (yang disertakan dengan FlipsideViewController).
Saya membaca bahwa karena ARC adalah fitur waktu kompilasi, itu harus kompatibel dengan iOS 4 juga, jadi saya mencoba menargetkan aplikasi saya ke 4.3, dan mencoba mengompilasinya. Ketika saya melakukannya, saya mendapatkan kesalahan ini:
FlipsideViewController.m: error: Masalah Penghitungan Referensi Otomatis: Target penerapan saat ini tidak mendukung referensi __weak otomatis
Ini merujuk pada baris ini:
@synthesize delegate = _delegate;
Variabel itu dideklarasikan sebagai:
@property (weak, nonatomic) IBOutlet id <FlipsideViewControllerDelegate> delegate;
Saya memahami bahwa "referensi lemah" tidak didukung di iOS 4, tetapi saya tidak begitu mengerti mengapa saya ingin menggunakan referensi yang lemah sebagai permulaan, saya juga tidak tahu bagaimana saya akan menulis ulang hal-hal untuk menghindari penggunaannya, sementara masih memanfaatkan ARC (lagipula, ini seharusnya bekerja dengan iOS 4 DAN 5 kan?)
sumber
unsafe_unretained
didukung di iOS 4.x dan 5.0, jadi ini memberi Anda kompatibilitas mundur. Jika Anda melakukan build 5.0 saja, Anda dapat beralih keweak
untuk memanfaatkan keamanan tambahan yang diberikannya kepada Anda.@autoreleasepool
(di bawah ARC, NSAutoreleasePool untuk implementasi terhitung referensi manual yang lebih lama).Jika hanya menggunakan referensi yang lemah untuk keamanan tambahan, panggil fungsi runtime baru secara manual jika tersedia dan kembali ke penetapan sederhana pada
__unsafe_unretained
variabel jika tidak.ZWRCompatibility.h akan menyederhanakan ini.
sumber
Berkat pustaka kompatibilitas Mike Ash PLWeakCompatibilty , Anda sekarang dapat menggunakan __weak di iOS 4.x juga.
Ini sangat mudah untuk dikonfigurasi dan tidak memerlukan pertimbangan atau usaha tambahan lebih dari 5.x.
sumber