Xcode 8 के रूप में, आप ओबज-सी में वर्ग गुणों को परिभाषित कर सकते हैं। यह स्विफ्ट के स्थिर गुणों के साथ जुड़ने के लिए जोड़ा गया है।
उद्देश्य-सी अब वर्ग गुणों का समर्थन करता है, जो स्विफ्ट प्रकार के गुणों के साथ हस्तक्षेप करता है। उन्हें इस प्रकार घोषित किया जाता है: @property (वर्ग) NSString * someStringProperty ;; वे कभी भी संश्लेषित नहीं होते हैं। (23891898)
यहाँ एक उदाहरण है
@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
तब आप इसे इस तरह एक्सेस कर सकते हैं:
YourClass.currentId = 1;
val = YourClass.currentId;
यहाँ एक बहुत ही रोचक व्याख्यात्मक पोस्ट है जिसका उपयोग मैंने इस पुराने उत्तर को संपादित करने के लिए एक संदर्भ के रूप में किया है।
2011 उत्तर: (इस का उपयोग न करें, यह भयानक है)
यदि आप वास्तव में एक वैश्विक चर घोषित नहीं करना चाहते हैं, तो एक और विकल्प, शायद बहुत रूढ़िवादी :-) नहीं है, लेकिन काम करता है ... आप इस तरह से "वैरिएबल सेट" विधि की घोषणा कर सकते हैं, जिसमें एक स्थिर चर है:
+ (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;
}
इसलिए, यदि आपको मूल्य प्राप्त करने की आवश्यकता है, तो बस कॉल करें:
NSString *testVal = [MyClass testHolder:nil]
और फिर, जब आप इसे सेट करना चाहते हैं:
[MyClass testHolder:testVal]
यदि आप इस छद्म-स्थैतिक-संस्करण को शून्य पर सेट करने में सक्षम होना चाहते हैं, तो आप testHolder
इस रूप में घोषणा कर सकते हैं :
+ (NSString*)testHolderSet:(BOOL)shouldSet newValue:(NSString*)_test {
static NSString *test;
if(shouldSet) {
if(test != nil)
[test release];
test = [_test retain];
}
return test;
}
और दो आसान तरीके:
+ (NSString*)test {
return [MyClass testHolderSet:NO newValue:nil];
}
+ (void)setTest:(NSString*)_test {
[MyClass testHolderSet:YES newValue:_test];
}
आशा करता हूँ की ये काम करेगा! सौभाग्य।