SORU
30 HAZİRAN 2009, Salı


Statik Sınıf Objective C Düzeyi değişkenleri

Her benzersiz bir KİMLİK mağazaları sınıf bir Film var. C#, Java static int bir currentİD ve KİMLİĞİNİ belirledim her zaman tanımlayabilirim vb currentİD artırabilir ve değişim sınıf düzeyinde nesne düzeyi oluşur. Bu Amaç C yapılabilir mi? Çok zor bir cevap bulamadım.

CEVAP
8 AĞUSTOS 2009, CUMARTESİ


Açıklama Sorunu:

  1. Senin class ClassB ClassA bir değişken var.
  2. Programlama dili olarak Objective-C kullanıyor.
  3. C gibi Objective-C sınıf değişkenleri desteklemiyor.

Bir Alternatif:

Sınıf değişken bir davranış Objective-C kullanarak özellikleri taklit

  1. /ClassA içinde statik bir değişken Tanımla bildirin.classA yöntemleri için sadece erişilebilir m (ve içine koyduğunuz her şeyi classA.m).

  2. ClassB örneği ile sadece bir kez statik değişkeni başlatmak için NSObject başlatmak sınıf yöntemi üzerine.

  3. Neden NSObject başlatma yöntemi üzerine yazmak gerekir diye merak ettim. Apple belgeler hakkında bu yöntem vardır cevap: "çalışma zamanı gönderir başlatmak için her sınıfta bir program tam bir zaman önce sınıf, ya da herhangi bir sınıf devralır, gönderilen ilk mesaj içinde gelen program. (Bu yöntemi hiç değilse sınıfı kullanılır değilse ileri sürülemez.)".

  4. Herhangi bir ClassA sınıf/örnek yöntem içinde bir statik değişkeni kullanmak için çekinmeyin.

Kod örneği:

dosya: classA.m

static ClassB *classVariableName = nil;

@implementation ClassA

...

 (void) initialize
{
    if (! classVariableName)
    	classVariableName = [[ClassB alloc] init];
}

 (void) classMethodName
{
    [classVariableName doSomething]; 
}

-(void) instanceMethodName
{
    [classVariableName doSomething]; 
}

...

@end

Referanslar:

  1. Class variables explained comparing Objective-C and C approaches

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

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Brendan van Son

    Brendan van

    5 Aralık 2006
  • LiveForGodsKingdom

    LiveForGodsK

    6 NİSAN 2008
  • placeboing

    placeboing

    7 Mart 2006