অবজেক্টিভ-সি-তে ক্লাস (বা স্ট্যাটিক) পদ্ধতিগুলি +ঘোষণাপত্রের সাহায্যে সম্পন্ন হয়েছিল ।
@interface MyClass : NSObject
+ (void)aClassMethod;
- (void)anInstanceMethod;
@end
কীভাবে এটি সুইফটে অর্জন করা যায়?
অবজেক্টিভ-সি-তে ক্লাস (বা স্ট্যাটিক) পদ্ধতিগুলি +ঘোষণাপত্রের সাহায্যে সম্পন্ন হয়েছিল ।
@interface MyClass : NSObject
+ (void)aClassMethod;
- (void)anInstanceMethod;
@end
কীভাবে এটি সুইফটে অর্জন করা যায়?
উত্তর:
এগুলিকে টাইপ প্রপার্টি এবং টাইপ পদ্ধতি বলা হয় এবং আপনি classবা staticকীওয়ার্ড ব্যবহার করেন ।
class Foo {
var name: String? // instance property
static var all = [Foo]() // static type property
class var comp: Int { // computed type property
return 42
}
class func alert() { // type method
print("There are \(all.count) foos")
}
}
Foo.alert() // There are 0 foos
let f = Foo()
Foo.all.append(f)
Foo.alert() // There are 1 foos
classকোনও ফাংশন বা গণিত প্রকারের সম্পত্তির আগে আপনার কীওয়ার্ডের দরকার নেই ।
এগুলিকে টাইপ প্রপার্টি বলা হয় এবং সুইফটে টাইপ পদ্ধতি এবং আপনি ক্লাস কীওয়ার্ডটি ব্যবহার করেন।
একটি শ্রেণিবদ্ধ পদ্ধতি বা দ্রুত পদ্ধতিতে টাইপ পদ্ধতি ঘোষণা:
class SomeClass
{
class func someTypeMethod()
{
// type method implementation goes here
}
}
এই পদ্ধতিতে অ্যাক্সেস করা:
SomeClass.someTypeMethod()
বা আপনি দ্রুত পদ্ধতিতে উল্লেখ করতে পারেন
ঘোষণাপত্রটি classযদি এটি কোনও শ্রেণি হয়, বা staticএটি কোনও কাঠামোযুক্ত থাকে তবে তা প্রস্তুত করুন।
class MyClass : {
class func aClassMethod() { ... }
func anInstanceMethod() { ... }
}
funcকিওয়ার্ডটির এখানে দরকার নেই?
সুইফট ১.১ এ শ্রেণীর বৈশিষ্ট্য নেই। ক্লোজ অবজেক্টের সাথে আবদ্ধ কোনও সম্পর্কিত বস্তুটি এনে ক্লোজার ক্লাসের সম্পত্তি ব্যবহার করে আপনি এটি প্রয়োগ করতে পারেন। (কেবলমাত্র এনএসবজেক্ট থেকে প্রাপ্ত ক্লাসগুলিতে কাজ করে))
private var fooPropertyKey: Int = 0 // value is unimportant; we use var's address
class YourClass: SomeSubclassOfNSObject {
class var foo: FooType? { // Swift 1.1 doesn't have stored class properties; change when supported
get {
return objc_getAssociatedObject(self, &fooPropertyKey) as FooType?
}
set {
objc_setAssociatedObject(self, &fooPropertyKey, newValue, objc_AssociationPolicy(OBJC_ASSOCIATION_RETAIN_NONATOMIC))
}
}
....
}