Pada Xcode 8, Anda bisa mendefinisikan properti kelas di Obj-C. Ini telah ditambahkan untuk beroperasi dengan sifat statis Swift.
Objective-C sekarang mendukung properti kelas, yang beroperasi dengan properti tipe Swift. Mereka dinyatakan sebagai: @ properti (kelas) NSString * someStringProperty ;. Mereka tidak pernah disintesis. (23891898)
Berikut ini sebuah contoh
@interface YourClass : NSObject
@property (class, nonatomic, assign) NSInteger currentId;
@end
@implementation YourClass
static NSInteger _currentId = 0;
+ (NSInteger)currentId {
return _currentId;
}
+ (void)setCurrentId:(NSInteger)newValue {
_currentId = newValue;
}
@end
Maka Anda dapat mengaksesnya seperti ini:
YourClass.currentId = 1;
val = YourClass.currentId;
Berikut adalah posting penjelasan yang sangat menarik yang saya gunakan sebagai referensi untuk mengedit jawaban lama ini.
2011 Jawaban: (jangan gunakan ini, ini mengerikan)
Jika Anda benar-benar tidak ingin mendeklarasikan variabel global, ada opsi lain, mungkin tidak terlalu ortodoks :-), tetapi berfungsi ... Anda dapat mendeklarasikan metode "get & set" seperti ini, dengan variabel statis di dalam:
+ (NSString*)testHolder:(NSString*)_test {
static NSString *test;
if(_test != nil) {
if(test != nil)
[test release];
test = [_test retain];
}
// if(test == nil)
// test = @"Initialize the var here if you need to";
return test;
}
Jadi, jika Anda perlu mendapatkan nilainya, telepon saja:
NSString *testVal = [MyClass testHolder:nil]
Dan kemudian, ketika Anda ingin mengaturnya:
[MyClass testHolder:testVal]
Jika Anda ingin dapat mengatur pseudo-static-var ini menjadi nil, Anda dapat mendeklarasikan testHolder
sebagai ini:
+ (NSString*)testHolderSet:(BOOL)shouldSet newValue:(NSString*)_test {
static NSString *test;
if(shouldSet) {
if(test != nil)
[test release];
test = [_test retain];
}
return test;
}
Dan dua metode praktis:
+ (NSString*)test {
return [MyClass testHolderSet:NO newValue:nil];
}
+ (void)setTest:(NSString*)_test {
[MyClass testHolderSet:YES newValue:_test];
}
Semoga ini bisa membantu! Semoga berhasil.