Разработката на приложения за Macintosh използва обратно извикване, за да позволи на Mac OS X да изпълнява код във вашето приложение за конкретни операции. Ако създавате стандартно приложение, базирано на прозорци или документи за Macintosh, първият код, който OS X ще изпълни, е в един от следните методи за обратно извикване, които трябва да създадете за приложението си, в зависимост от дизайна на приложението:
-
Приложения, базирани на прозорец: (void)applicationDidFinishLaunching:(NSNotification*)aNotification
-
Приложения, базирани на документи: (void)windowControllerDidLoadNib:(NSWindowController*)windowController
Обратното извикване е просто метод, който операционната система в крайна сметка изпълнява, докато се опитва да предостави или извлече информация от вашето приложение. Кодът на вашето приложение ще изпълни метод за клас Cocoa, където вашето приложение ще има възможност да предостави името на метод на един от вашите класове, който да бъде извикан върху обект от този клас, който приложението ви също трябва да предостави.
А делегат е помощник обект, който клас Какао използва, за да се разшири функционалността на класа, като ви позволява да изпълнява код, който класа какаото ще изпълни при определени обстоятелства. Клас Cocoa проверява своя обект на делегат (ако е присвоен) за това дали делегатът предоставя реализация на конкретен метод. Ако делегатът има този метод, класът Cocoa изпълнява този метод; ако делегатът не прилага този конкретен метод, класът Cocoa или използва собствен метод по подразбиране, или регистрира грешка. Повечето делегати трябва да включат конкретен протокол, който определя какви методи могат да прилагат; делегатите на вашия код трябва да използват методите за внедряване от конкретния протокол, който делегатът очаква.
Ето някои от обектите Cocoa, които могат да използват делегати за изпълнение на вашия код:
-
NSTableView. NSTableView приема делегат, който се подчинява на протокола NSTableViewDelegate. Това включва 20 до 30 метода, които обектът на делегата на вашето приложение може да приложи, за да поддържа необходимостта на приложението ви да знае какво прави NSTableView. Има методи, които ще бъдат извикани във вашето приложение, когато то трябва да знае и да реагира на действие, като например когато потребител направи избор в таблицата или когато колона бъде преоразмерена.
-
NSA приложение. Можете да зададете NSApplicationDelegate да обработва някои от методите, които екземпляр на NSApplication (вашето приложение) ще получи. Тези методи могат да бъдат извикани точно преди или веднага след като приложението ви изпълни друг метод, така че приложението ви да може да бъде подготвено.
-
NSWindow. NSWindowDelegate, присвоен на един от прозорците на вашето приложение, ще даде на приложението ви шанс да отговори на потребителско преоразмеряване, преместване или други събития на прозореца.
-
NSMenu. Внедрявате NSMenuDelegate, за да поддържате събития, които се случват, когато потребител взаимодейства с менютата във вашето приложение.