এক্সকোড 8 হিসাবে, আপনি ওবজে-সি শ্রেণীর বৈশিষ্ট্য নির্ধারণ করতে পারেন। এটি সুইফ্টের স্ট্যাটিক বৈশিষ্ট্যগুলির সাথে আন্তঃব্যবহার করতে যুক্ত করা হয়েছে।
উদ্দেশ্য-সি এখন শ্রেণীর বৈশিষ্ট্যগুলিকে সমর্থন করে, যা সুইফ্ট প্রকারের বৈশিষ্ট্যগুলির সাথে আন্তঃব্যবহার করে। তাদের হিসাবে ঘোষণা করা হয়েছে: @ প্রপার্টি (শ্রেণি) এনএসএসআর্টিং * কিছু স্ট্রিংপ্রপার্টি;। এগুলি কখনই সংশ্লেষিত হয় না। (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;
এই পুরাতন উত্তরটি সম্পাদনা করার জন্য আমি এখানে একটি খুব আকর্ষণীয় ব্যাখ্যামূলক পোস্ট উল্লেখ করেছি।
২০১১ উত্তর: (এটি ব্যবহার করবেন না, এটি ভয়ানক)
আপনি যদি সত্যিই কোনও বিশ্বব্যাপী পরিবর্তনশীল ঘোষণা করতে না চান, তবে অন্য একটি বিকল্প রয়েছে, সম্ভবত খুব গোঁড়া :-) নয়, তবে কাজ করে ... আপনি অভ্যন্তরীণ স্থিতিশীল ভেরিয়েবল সহ "গেট অ্যান্ড সেট" পদ্ধতিটি ঘোষণা করতে পারেন:
+ (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];
}
আশা করি এটা সাহায্য করবে! শুভকামনা।