您的位置:首页 > 移动开发 > Objective-C

Objective-C Runtime IV 【使用隐藏的参数】

2012-06-14 10:41 218 查看

使用隐藏的参数

objc_msgSend
找到方法对应的实现时,它将直接调用该方法实现,并将消息中所有的参数都传递给方法实现,同时,它还将传递两个隐藏的参数:

接收消息的对象

方法选标

这些参数帮助方法实现获得了消息表达式的信息。它们被认为是”隐藏“的是因为它们并没有在定义方法的源代码中声明,而是在代码编译时是插入方法的实现中的。

尽管这些参数没有被显示声明,但在源代码中仍然可以引用它们(就象可以引用消息接收者对象的实例变量一样)。在方法中可以通过
self
来引用消息接收者对象,通过选标
_cmd
来引用方法本身。在下面的例子中,
_cmd
指的是
strange
方法,
self
指的收到
strange
消息的对象。

- strange

{

id  target = getTheReceiver();

SEL method = getTheMethod();

if ( target == self || method == _cmd )

return nil;

return [target performSelector:method];

}

在这两个参数中,
self
更有用一些。实际上,它是在方法实现中访问消息接收者对象的实例变量的途径。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: