उद्देश्य-सी में कक्षा (या स्थिर) विधियाँ +
घोषणाओं का उपयोग करके पूरी की गईं ।
@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
फ़ंक्शन या कंप्यूट प्रकार की संपत्ति से पहले कीवर्ड की आवश्यकता नहीं है ।
उन्हें Swift में टाइप प्रॉपर्टीज़ और टाइप मेथड्स कहा जाता है और आप क्लास कीवर्ड का उपयोग करते हैं।
कक्षा विधि या टाइप विधि को तेजी से घोषित करना:
class SomeClass
{
class func someTypeMethod()
{
// type method implementation goes here
}
}
उस विधि तक पहुँच:
SomeClass.someTypeMethod()
या आप स्विफ्ट में तरीके का उल्लेख कर सकते हैं
घोषणा के साथ रोकें कि class
क्या यह एक वर्ग है, या static
यदि यह एक संरचना है।
class MyClass : {
class func aClassMethod() { ... }
func anInstanceMethod() { ... }
}
func
यहां कीवर्ड की आवश्यकता नहीं है?
स्विफ्ट 1.1 में वर्ग गुण नहीं हैं। आप इसे एक क्लोजर क्लास प्रॉपर्टी का उपयोग करके लागू कर सकते हैं जो क्लास ऑब्जेक्ट से जुड़ी एक संबद्ध वस्तु को लाती है। (केवल NSObject से प्राप्त कक्षाओं में काम करता है।)
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))
}
}
....
}
यदि यह एक फ़ंक्शन है, या स्थैतिक के साथ वर्ग के साथ घोषणा को रोकें या अगर यह एक संपत्ति है।
class MyClass {
class func aClassMethod() { ... }
static func anInstanceMethod() { ... }
static var myArray : [String] = []
}