Передача методов / функций как аргументов в Objective C - PullRequest
1 голос
/ 29 марта 2010

Я новичок в Objective C и пытаюсь реализовать асинхронную библиотеку, которая работает с обратными вызовами. Мне нужно выяснить способ передачи методов обратного вызова в качестве аргументов моим асинхронным методам, чтобы обратный вызов мог быть вызван после завершения задачи.

Каков наилучший способ достичь этого в Цели C? В Python, например, я мог бы легко передать функцию, но в Objective C кажется, что селекторы - это путь (?).

Может кто-нибудь указать мне пример, из которого я могу получить некоторые идеи?

Спасибо заранее.

Ответы [ 2 ]

5 голосов
/ 29 марта 2010

Селекторы - это ОДИН путь ... альтернатива состоит в том, чтобы создать протокол и потребовать, чтобы инициаторы вашего API предоставили объект "делегат", который реализует протокол. Затем вы можете вызвать необходимые селекторы этого протокола на объекте делегата, который вам дали. У каждого есть свои преимущества и недостатки.

Пример использования селекторов: NSThread: detachNewThreadSelector: toTarget: withObject

Пример использования делегатов: NSXMLParser: setDelegate + NSXMLParser: parse

0 голосов
/ 29 марта 2010

Я думаю, что нашел ответ на свой вопрос в этом вопросе .

Этот пример кода на сайте разработчика Apple был очень полезен.

...