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
Açıklama Sorunu:
- Senin class ClassB ClassA bir değişken var.
- Programlama dili olarak Objective-C kullanıyor.
- 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
/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).
ClassB örneği ile sadece bir kez statik değişkeni başlatmak için NSObject başlatmak sınıf yöntemi üzerine.
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.)".
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:
Python statik sınıf değişkenleri...
Non-senkronize statik yöntemler parçac...
Objective-C özellikleri ve Örnek Değiş...
Neden Java statik olarak bir sınıf bil...
Neden [Sınıfım sınıf] Objective-C yapm...