2013-12-10 2 views
0

Существуют различные библиотеки разработчиков Mac, которые вызывают определенные реализованные методы при возникновении определенного события. Например, существует ImageCapture структура, которая имеет множество методов, относящихся к протоколу, который реализует делегат как didAddDevice, didWindowLoad и т.д.Как методы, вызываемые и возвращаемые Mac OS

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

+0

Добавить точку останова и перейти вперед по одной линии в то время и посмотреть, что произойдет. – juniperi

+0

Я пробовал использовать точку останова. Проблема в том, что я не знаю, куда будет идти контроль после метода, поэтому, когда я продвигаюсь вперед после завершения функции, приложение просто стоит там, где элемент управления достигает неизвестного. – Sankalp

ответ

0

Методы вызываются и возвращаются в Objective-C относительно обычным способом: при вызове метода сообщение отправляется экземпляру, который должен выполнить метод, состоящий из имени метода (которое мы вызовите селектор) и указатели на аргументы и вызывающего абонента (которого мы называем отправителем).

важные практические различия в том, как много других языков делать этого:

Отправка сообщения на ноль не приводит исключения нулевого указателя. Он просто отбрасывается, ничего не происходит, и вас даже не получают уведомления.

Когда экземпляр не реализует селектор, существуют механизмы, позволяющие пересылать сообщение другим объектам. Однако это редко делается.

Вы можете спросить экземпляр, реализует ли он какой-то определенный селектор, а если нет, то не отправляйте ему сообщение (потому что это сбой).

Так что происходит в вашем конкретном случае?

Методы, которые вы описываете выше, вызываются делегатом отправителя. Они, скорее всего, являются необязательными, а это означает, что если они не реализованы в делегитете (хотя делегат придерживается протокола), отправитель увидит, что они не имплантированы и на самом деле не будут пытаться их вызвать.

Другая возможность заключается в том, что вы не установили делегат.

+0

Метод IS получает вызов. То, что я пытаюсь понять, - это то, где будет возвращаться элемент управления, когда закончится выполнение метода. – Sankalp

+0

Отправителю. И затем, в вашем примере, вернитесь к вам. – fzwo

Смежные вопросы