एक संदेश एक चयनकर्ता का नाम है, और उस चयनकर्ता के लिए पैरामीटर।
एक चयनकर्ता एक प्रतीक है।
एक विधि एक वर्ग में कोड का एक टुकड़ा है जिसे एक चयनकर्ता द्वारा पहचाना जाता है।
दूसरे शब्दों में, [foo bar: baz]
कहते हैं " @selector(bar:)
पैरामीटर के साथ बुलाया संदेश baz
वस्तु पर foo
भेजें। आप उस संदेश को कई अलग-अलग वस्तुओं में भेज सकते हैं।
इसके विपरीत, विधि bar:
एक के लिए Foo
कैसा लग सकता है
-(int)bar:(int)n {
return n + 1;
}
लेकिन एक FooTwo
तरह लग सकता है
-(int)bar:(int)n {
return n + 2;
}
(मुझे आशा है कि मेरे पास वाक्यविन्यास अधिकार है; मैंने अंतिम बार ऑब्जेक्टिव-सी को छुआ है।)
जब आप संदेश भेजते हैं, तो Objective-C कर्नेल उस संदेश को भेजता है foo
जो यह तय करता है कि क्या वह संदेश को समझता है। यह इस आधार पर तय करता है कि वह उस चयनकर्ता द्वारा पहचानी गई विधि खोज सकता है या नहीं।
एक ही नाम के दो तरीके, और एक संदेश।
किसी वस्तु को किसी विशेष संदेश (या संदेशों के सेट) को प्रसंस्करण के लिए किसी अन्य वस्तु के लिए अग्रेषित करना भी संभव है। इस स्थिति में, आप इस प्रॉक्सी ऑब्जेक्ट को एक संदेश भेजते हैं, जिसमें उस संदेश से मेल करने के लिए कोई विधि नहीं है , और प्रॉक्सी संदेश को अपनी लिपटी हुई वस्तु के लिए अग्रेषित करता है।