码迷,mamicode.com
首页 > 其他好文 > 详细

关联对象和objc_msgSend

时间:2015-05-31 21:29:34      阅读:213      评论:0      收藏:0      [点我收藏+]

标签:

关联对象,其实就是给某个对象关联其他一些对象,这些对象通过键来设置和存储,并且存储对象值得时候可以设置存储策略,常用在类别中

比如我们给UIButton创建一个类别,不用将button处理的事件分开写了

技术分享技术分享

 
 
 
2.消息传递
OC是C的超集,C语言使用的是静态绑定,在编译期就能决定运行时候调用的函数,而OC在给对象传递消息的时候,是利用动态绑定来决定所要调用的方法,是在运行期才知道该调用的方法,甚至可以在运行期改变方法,这使得OC是一门及其动态的语言
 
 
3.消息转发
这里涉及到一个问题就是,当某个对象接收到未知的消息后会发生什么,一般情况是程序会崩溃,但我们可以处理这个未知的消息,使得程序不会creash
OC在编译期间不会报错,因为在运行期可以动态的给该类增加方法。
 
如果对象接受到未知的消息后,就会执行消息转发
分两个阶段,第一阶段:先征询接收者所属的类是否可以动态的添加方法,以处理这个未知的selector,此步叫做动态方法解析
第二阶段:如果没有,就执行这一步,运行期系统会请求接收者以其他方式来处理,又分为二小步。
          1.看接收者看看有没有其他对象可以处理此消息,如果有,运行期系统就会把消息传递给那个对象,消息转发结束
          2.如果没有,就执行完整的消息转发流程,运行期系统会把与消息有关的所有信息封装在NSInvocation对象中,再给接收者最后一次机会,
 
技术分享
 
技术分享
 
 

关联对象和objc_msgSend

标签:

原文地址:http://www.cnblogs.com/listener/p/4542580.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!