有各种Mac开发人员库在发生特定事件时调用某些已实现的方法。例如,有一个ImageCapture
框架,其中有许多与委托实现的协议有关的方法,如didAddDevice
,didWindowLoad
等。
我的问题是当调用该方法时,控制在该方法完成执行后到达何处。我问这个是因为我正在处理的项目涉及使用这样的框架,其中 - 在调用的方法完成执行之后,程序就会挂起,即我不确定控件到达的位置。有谁能提出建议?
答案 0 :(得分:0)
调用方法并以相对普通的方式在Objective-C中返回:当要调用方法时,将消息发送到应该执行该方法的实例,该方法由方法组成name(我们称之为 selector ),以及指向参数和调用者的指针(我们称之为 sender )。
与其他语言有多少重要的实际区别是:
将消息发送到nil不会导致空指针异常。它只是被悄然丢弃,没有任何反应,甚至没有得到通知。
当实例未实现选择器时,存在允许将消息转发到其他对象的机制。但这很少发生。
您可以询问一个实例是否实现某个选择器,如果没有,请选择不向其发送消息(因为这会崩溃)。
那么具体情况会发生什么?
您在上面描述的方法会在发件人的委托上被调用。它们可能是可选的,这意味着如果它们没有在代理上实现(即使代理遵守协议),发送方将看到它们没有植入,也不会实际尝试调用它们。
另一种可能性是你没有设置代表。