Arayüzünüzde, küme ayraçları arasında veya @property
küme ayraçlarının dışında veya her ikisi aracılığıyla resmi olarak bir örnek değişkeni tanımlayabilirsiniz . Her iki durumda da sınıfın nitelikleri haline gelirler. Aradaki fark, eğer beyan @property
ederseniz, @synthesize
sizin için alıcınızı / ayarlayıcınızı otomatik olarak kodlayan kullanarak uygulayabilirsiniz . Örneğin, otomatik kodlayıcı ayarlayıcı tam sayıları başlatır ve sıfıra atar. Bir örnek değişkeni bildirirseniz ve karşılık gelen bir değişken belirtmezseniz , kendi alıcı / ayarlayıcınızı @property
kullanamazsınız @synthesize
ve yazmanız gerekir .
Otomatik kodlu alıcı / ayarlayıcıyı her zaman kendiniz belirleyerek geçersiz kılabilirsiniz. Bu genellikle managedObjectContext
tembel olarak yüklenen mülk ile yapılır . Böylece, kendinizi managedObjectContext
bir mülk olarak ilan edersiniz , ancak daha sonra bir -(NSManagedObjectContext *)managedObjectContext
yöntem de yazarsınız . Bir örnek değişkeni / özelliği ile aynı ada sahip bir yöntemin "alıcı" yöntemi olduğunu hatırlayın.
@property
Beyan yöntemi ayrıca aşağıdakiler gibi diğer seçenekler, izin verir retain
ve readonly
örnek değişken bildirim yöntemi değil. Temelde, ivar
eski yoldur ve @property
onu genişletir ve daha süslü / daha kolay hale getirir. Kendini kullanarak her ikisine de başvurabilirsiniz. önek olsun veya olmasın, ad o sınıfa özgü olduğu sürece önemli değildir. Aksi takdirde, üst sınıfınız sizinle aynı özelliğe sahipse, o zaman hangi addan bahsettiğinizi belirtmek için self.name veya super.name gibi söylemeniz gerekir.
Böylelikle, ivar
diş telleri arasında giderek daha az sayıda insanın s ilan ettiğini ve bunun yerine sadece belirlemeye @property
ve sonra yapmaya yöneldiğini göreceksiniz @synthesize
. @synthesize
Karşılık gelmeden uygulamanızda yapamazsınız @property
. Sentezleyici, yalnızca @property
spesifikasyondan ne tür bir nitelik olduğunu bilir . Synthesize ifadesi ayrıca özellikleri yeniden adlandırmanıza olanak tanır, böylece kodunuzun içinde bir özelliğe tek adla (steno) başvurabilirsiniz, ancak .h dosyasının dışında tam adı kullanabilirsiniz. Ancak, XCode'un sahip olduğu gerçekten harika otomatik tamamlamayla, bu daha az bir avantaj, ancak yine de var.
Umarım bu, etrafta dolaşan tüm kafa karışıklığını ve yanlış bilgileri gidermeye yardımcı olur.