2011-08-09 26 views
9

Birisi, ben sınıfın sadece bir örneği onlara bakın, böylece özel özelliklerini yapabilir (öz yoluyla.)Özel mülkler nasıl oluşturulur?

Ancak, sınıf arayüzünde @private kullanmak ve daha sonra normal olarak mal beyanında eğer bana hala sınıfın dışından erişilebilir ... Peki nasıl özel mülkler yapabilirim? Sözdizimi örneği lütfen.

cevap

20

Bu özellikleri bir sınıf uzantısına eklemeniz gerekir. Bu, uygulama dosyanızdaki özellikleri (ve daha yeni iVars'ı) bir arabirim bildiriminde tanımlamanıza olanak tanır. Bir kategoriyi tanımlamaya benzer, ancak parantez arasında bir adsızdır.

Yani bu sizin MyClass.m file:

// Class Extension Definition in the implementation file 
@interface MyClass() 

@property (nonatomic, retain) NSString *myString; 

@end 

@implementation MyClass 

- (id)init 
{ 
    self = [super init]; 
    if(self) 
    { 
     // This property can only be accessed within the class 
     self.myString = @"Hello!"; 
    } 
} 

@end 
+4

Sınıf uzantısının, yalnızca erişim gerektiren sınıflarda yalnızca bir "kitaplık özel" özelliğine izin vererek erişebileceğiniz bir başlık dosyasında olabileceğini unutmayın. – bbum

5

, uygulama (.m) dosyasında özelliğini bildirin şöyle:

@interface MyClass() 

@property (nonatomic, retain) MyPrivateClass *secretProperty; 

@end 

Kullanılacak mümkün olacak Bir derleyici uyarısı olmadan sınıfınızdaki bu özellik.

+0

Orada özellik yaratmanın avantajı nedir. Doğrudan ivar.I'leri kullanabiliriz? – Imran

+1

Avantajlar tutarlılıktır (kamu ve özel mülklere aynı şekilde erişilir), netlik (özellikler görünüm özellikleri gibidir) ve esneklik (tüm özellik erişimi aynı yöntemden geçer, bu nedenle tembel yükleme, hesaplanan özellikler vb. Önemsizdir) . – kubi

İlgili konular