当前位置: 首页 > news >正文

cms网站建设有多少条数据自助搭建平台

cms网站建设有多少条数据,自助搭建平台,如保做网站赢利,做音乐网站的目的和意义第11条:理解objc_msgSend的作用 1. 动态语言特性 在Objective-C中,如果向某对象传递消息,那就会使用动态绑定机制来决定需要调用的方法。在底层,所有方法都是普通的C语言函数,然而对象收到消息之后,究竟该…

第11条:理解objc_msgSend的作用

1. 动态语言特性

在Objective-C中,如果向某对象传递消息,那就会使用动态绑定机制来决定需要调用的方法。在底层,所有方法都是普通的C语言函数,然而对象收到消息之后,究竟该调用哪个方法则完全于运行期决定,甚至可以在程序运行时改变,这些特性使得Objective-C成为一门真正的动态语言。

2. 消息派发(message dispatch)

*** 消息派发的一般过程 ***
给对象发送消息,如下:

id returnValue  = [someObject messageName:parameter];

解释:someObject是“接收者”,messageName是“选择器”,选择器与参数合起来成为“消息”。

编译器在看到此消息后,将其转换为一条标准的C语言函数调用objc_msgSend,其原型如下:

void objc_msgSend(id self, SEL cmd, ...)

 解释:这是个参数可变的函数。第一个参数代表接收者,第二个参数代表选择器,后续参数就是消息中的那些参数,其顺序不变。

对先前例子中的消息进行转换,如下:

id returnValue  = objc_msgSend(someObject, @selector(messageName:), parameter);

解释:objc_msgSend函数会依据接收者与选择器的类型来调用适当的方法。为了完成此操作,该方法需要在接收者所属的类中搜寻其“方法列表”,如果能找到与选择器名称相符的方法,就跳至其实现代码。若是找不到,那就沿着继承体系继续向上查找,等找到合适的方法之后再跳转。如果最终还是找不到相符的方法,那就执行“消息转发”(message forwarding)操作。

3. 消息派发的特殊情况

  • objc_msgSend_stret:如果待发送的消息要返回结构体,那么可交由此函数处理。
  • objc_msgSend_fpret:如果消息返回的是浮点数,那么交由此函数处理。
  • objc_msgSendSuper:如果要给超类发消息,例如[super message:parameter],那么就交由此函数处理。

4. 尾调用优化

objc_msgSend等函数一旦找到应该调用的方法实现之后,就会“跳转过去”。之所以能这么做,是因为Objective-C对象的每个方法都可以视为简单的C函数,其原型如下;

<return_type> Class_selector(id self, SEL _cmd, ...)

 

解释:每个类里都有一张表格,其中的指针都会指向这种函数,而选择器的名称则是查表时所用的“键”。objc_msgSend等函数正是通过这张表格来寻找应该执行的方法并跳至其实现的。其中,所使用的“尾调用优化”(tail-call optimization)技术,可以让“跳至方法实现”这一操作变得更简单些。但是,只有当某函数的最后一个操作仅仅是调用其他函数而不会将其返回值另作他用时,才能执行“尾调用优化”。

要点

  • 消息由接收者选择器参数构成。给某对象“发送消息”(invoke a message)也就相当于在该对象上“调用方法”(call a method)。
  • 发给某对象的全部信息都要由“动态消息派发系统”(dynamic message dispatch system)来处理,该系统会查出对应的方法,并执行其代码。

http://www.mmbaike.com/news/40000.html

相关文章:

  • 怎么在别人网站上做锚文本链接手机百度app安装下载
  • 深圳航空公司官网首页谷歌优化工具
  • 江门免费建站公司免费外链代发平台
  • 网站制作带模板破解版行者seo无敌
  • 建设网站公司怎么分工seo快速排名软件案例
  • 查看邮箱注册的网站seo 工具推荐
  • h5 css3网站欣赏营销传播
  • 如何给自己做网站全国疫情今天最新消息
  • web网站开发案例的好书正规优化公司哪家好
  • wordpress性能甘肃seo网站
  • 做网站需要哪个专业买链接网
  • 网站的引导页怎么做的精品成品网站入口
  • 自己做网站要多少钱网站优化建设
  • 做网站版头蓝色图片推广关键词优化
  • 哪个网站有上门做指甲推广营销软件app
  • 网站制作例子seo培训中心
  • 龙岩建设局网站罗小波线上营销活动方案
  • 制作微信公众号的网站开发武汉seo公司出 名
  • 网站建设和维护价格网站制作河南
  • 域名过期做的网站怎么办360竞价推广技巧
  • 如何仿做网站百度seo软件优化
  • 网站图片切换代码深圳华强北
  • seo网站计划书抖音关键词优化排名靠前
  • ui设计周末培训机构网站推广和精准seo
  • 杭州动漫设计公司最新招聘百度关键词优化企业
  • 黑河北京网站建设数据分析师培训机构推荐
  • 仿58网站怎么做凡科网小程序
  • 做阿里巴巴类似的网站吗seo和sem的区别是什么
  • 深圳网站建设网站制作公司seo推广人员
  • 典型网站建设百度文章收录查询