Di antarmuka Anda, Anda dapat secara resmi mendeklarasikan variabel instance di antara tanda kurung kurawal, atau melalui @propertykurung 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 @synthesizedan harus menulis getter / setter Anda sendiri.
Anda selalu dapat menimpa pengambil / penyetel kode otomatis dengan menentukan milik Anda sendiri. Ini biasanya dilakukan dengan managedObjectContextproperti yang dimuat secara lambat. Jadi, Anda mendeklarasikan milik Anda managedObjectContextsebagai properti, tetapi juga menulis -(NSManagedObjectContext *)managedObjectContextmetode. Ingatlah bahwa metode, yang memiliki nama yang sama dengan variabel / properti instance adalah metode "pengambil".
The @propertyMetode deklarasi juga memungkinkan Anda pilihan lain, seperti retaindan readonly, yang metode deklarasi variabel contoh tidak. Pada dasarnya, ivaradalah cara lama, dan @propertymemperluasnya 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 ivars di antara kurung kurawal, dan sebaliknya beralih ke hanya menentukan @property, lalu melakukan @synthesize. Anda tidak dapat melakukannya @synthesizedalam implementasi Anda tanpa yang sesuai @property. Synthesizer hanya mengetahui jenis atributnya dari @propertyspesifikasi. 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.