SORU
11 AĞUSTOS 2009, Salı


Nasıl gerçek özel bir örnek değişken yapmak için?

Dışarıdan erişilebilir değil o örnek bir değişken yapmak istiyorum. Objective-c bu mümkün gibi bir şey mi? Apple bu gibi özel değişkenleri falan var hatırlıyorum, ama eğer insanlar onları biliyor, onları kullanabilirler. Apple "özel API", ama belli ki Diğerleri eğer öğrenirlerse o şeyi erişimi vardır. bu aramalar

Şimdiye kadar böyle bir şey özel örnek bir değişken oluşturur inandım:

@interface MyClass : NSObject {
    CGFloat weight;
}

@Hiçbir özelliği yok, @sentez, sadece yukarıdaki bildirim.

Ayrıca Apple bunu yaparken yanlışlıkla gizli örnek değişkenleri geçersiz olabilir, çünkü ama başkalarının yaptığını görmek gibi olmadığı bir yerde dediler _inFrontOfTheirPrivateİnstanceVariables, bir de ekliyor biliyorum.

Buradaki hile nedir?

CEVAP
11 AĞUSTOS 2009, Salı


{} içinde @private anahtar sözcüğünü izleyen tüm değişken tanımlama özel yapmak için kullanabilirsiniz. Varsayılan görünürlük @protected Java protected benzer ve bu genellikle iyi çalışır. Özellikle sınıf dışında doğrudan erişilebilir olması için @public olarak bir değişkeni bildirmek gerek.

This Apple documentation değişken kapsamını ve görünürlüğü hakkında daha fazla bilgi vardır.

Ayrıca "özel API" ve özel değişkenler arasında bir fark yoktur Objective-C, yöntemleri özel yapamazsınız — kimse herhangi bir yöntemini çağırabilir. Oluşturmak için çeşitli yollar vardır "gizli" bir bakıma bu sorunun kapsamı dışında olan yöntemler, ama. Burada bir kaç soru ile ilgili

Değişkenlerin önünde lider _ kadarıyla, Apple da "özel" yöntemler. bu önek saklı tuttuğunu farkında olarak Sorunları önlemek garanti etmek için en iyi yolu kendi değişkenleri ve yöntemleri için normal adlandırma kurallarını kullanın. Kakao bir şey alt sürece ancak, (NSObject dışında) herhangi bir problem olmaz oldukça emin olabilirsiniz.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Snazzy Labs

    Snazzy Labs

    9 Aralık 2008
  • TechXCentral

    TechXCentral

    12 Temmuz 2011
  • Virtual Riot

    Virtual Riot

    19 Mayıs 2011