Saya baru-baru ini mencoba untuk mengkompilasi proyek Xcode yang lebih lama (yang digunakan untuk mengkompilasi dengan baik), dan sekarang saya melihat banyak kesalahan dari formulir ini:
error: writable atomic property 'someProperty' cannot pair a synthesized setter/getter with a user defined setter/getter
Pola kode yang menyebabkan kesalahan ini selalu terlihat seperti ini:
// Interface:
@property (retain) NSObject * someProperty;
// Implementation:
@synthesize someProperty; // to provide the getter
- (void)setSomeProperty:(NSObject *)newValue
{
//..
}
Saya bisa melihat mengapa kesalahan ini terjadi. Saya memberitahu kompiler untuk mensintesis aksesor properti saya (baik pengambil dan penyetel), dan kemudian segera saya menimpa penyetel secara manual. Kode itu selalu berbau sedikit.
Jadi, apa cara yang tepat untuk melakukan ini? Jika saya menggunakan @dynamic
alih-alih @synthesize
, saya harus menulis getter juga. Apakah itu satu-satunya jalan?
atomic
properti? Dalam hal sifat atom, mungkin merupakan ide yang baik untuk menjaga pasangan pengambil / penyetel sinkron sehubungan dengan strategi penguncian. Ini sulit jika satu bagian disintesis sementara yang lain adalah kode kustom.