Di antarmuka Anda, Anda dapat secara resmi mendeklarasikan variabel instance di antara tanda kurung kurawal, atau melalui @property
kurung kurawal, atau keduanya. Bagaimanapun, mereka menjadi atribut kelas. Perbedaannya adalah jika Anda mendeklarasikan @property
, maka Anda dapat mengimplementasikan menggunakan @synthesize
, yang otomatis mengkodekan pengambil / penyetel untuk Anda. Penyetel pengkode otomatis menginisialisasi bilangan bulat dan mengapung ke nol, misalnya. JIKA Anda mendeklarasikan variabel instance, dan JANGAN menentukan variabel terkait @property
, Anda tidak dapat menggunakan @synthesize
dan harus menulis getter / setter Anda sendiri.
Anda selalu dapat menimpa pengambil / penyetel kode otomatis dengan menentukan milik Anda sendiri. Ini biasanya dilakukan dengan managedObjectContext
properti yang dimuat secara lambat. Jadi, Anda mendeklarasikan milik Anda managedObjectContext
sebagai properti, tetapi juga menulis -(NSManagedObjectContext *)managedObjectContext
metode. Ingatlah bahwa metode, yang memiliki nama yang sama dengan variabel / properti instance adalah metode "pengambil".
The @property
Metode deklarasi juga memungkinkan Anda pilihan lain, seperti retain
dan readonly
, yang metode deklarasi variabel contoh tidak. Pada dasarnya, ivar
adalah cara lama, dan @property
memperluasnya serta membuatnya lebih menarik / lebih mudah. Anda bisa merujuk ke salah satunya dengan menggunakan diri. awalan, atau tidak, tidak masalah selama namanya unik untuk kelas itu. Jika tidak, jika superclass Anda memiliki nama properti yang sama dengan Anda, maka Anda harus mengatakan like self.name atau super.name untuk menentukan nama yang Anda bicarakan.
Dengan demikian, Anda akan melihat semakin sedikit orang yang mendeklarasikan ivar
s di antara kurung kurawal, dan sebaliknya beralih ke hanya menentukan @property
, lalu melakukan @synthesize
. Anda tidak dapat melakukannya @synthesize
dalam implementasi Anda tanpa yang sesuai @property
. Synthesizer hanya mengetahui jenis atributnya dari @property
spesifikasi. Pernyataan sintesis juga memungkinkan Anda untuk mengganti nama properti, sehingga Anda dapat merujuk ke properti dengan satu nama (singkatan) di dalam kode Anda, tetapi di luar di file .h gunakan nama lengkap. Namun, dengan pelengkapan otomatis yang sangat keren yang dimiliki Xcode sekarang, ini kurang menguntungkan, tetapi masih ada.
Semoga ini bisa membantu menjernihkan semua kebingungan dan misinformasi yang beredar di luar sana.