आम तौर पर, आपको किसी ऑब्जेक्ट के विशिष्ट उदाहरण पर चलने वाले कोड की आवश्यकता होने पर इंस्टेंस विधियां बनाना चाहिए। जब आप उस वर्ग को सामान्य रूप से शामिल करते हैं, तो उस वर्ग की किसी विशिष्ट वस्तु पर काम नहीं करते हैं, तो आप एक क्लास विधि बनाते हैं।
प्रैक्टिस में, आप पाएंगे कि लगभग सभी विधियां उदाहरण विधियों होनी चाहिए। बस NSString
, NSArray
, UIView
इत्यादि जैसी मौजूदा उद्देश्य-सी कक्षा पर नज़र डालें और आप देखेंगे कि उनके अधिकांश तरीके उदाहरण विधियां हैं। कक्षा विधियों का सबसे आम उपयोग (फिर, मैंने जो कक्षाओं का उल्लेख किया है) उन सुविधाओं के लिए हैं जो autorelease
ऑब्जेक्ट्स, या सिंगलटन एक्सेसर्स लौटाते हैं।
NSString
में length
विधि पर विचार करें। यह एक उदाहरण विधि क्यों है और क्लास विधि नहीं है? यह एक उदाहरण विधि है क्योंकि यह केवल NSString
के विशिष्ट उदाहरण से पूछने के लिए समझ में आता है कि इसकी लंबाई क्या है। लंबाई के लिए NSString
सामान्य रूप से पूछना (यानी यदि लंबाई एक वर्ग विधि थी) कोई समझ नहीं लेगी।
दूसरी तरफ, मान लें कि हम NSNumber
पर एक विधि जोड़ना चाहते हैं जो अधिकतम पूर्णांक मान को वापस कर देगा जो किसी दिए गए सिस्टम पर संग्रहीत किया जा सकता है। इस मामले में, यह वर्ग विधि होना चाहिए क्योंकि हम केवल NSNumber
का सामान्य प्रश्न पूछ रहे हैं जो कि किसी विशिष्ट उदाहरण से स्वतंत्र है।
[उद्देश्य-सी: कक्षा बनाम इंस्टेंस विधियों?] के संभावित डुप्लिकेट? (Http://stackoverflow.com/questions/1053592/objective-c-class-vs-instance-methods) –