初来乍到
由于触犯天条,被打落凡间,记忆全无,唯独iOS三个字总是被我不经意间提起。
也许冥冥之中自有安排,一个偶然的机会,我踏上了iOS修仙之路。
道路坎坷,首先要面对的就是Objective-C。这个东西看起来有些丑陋,而且听说它有一个技能叫做Runtime。此技能极其凶残,施放不好的话,会造成自己筋脉错乱,因此Objective-C与他人过招时都很少主动使用。
集帅气与智慧于一身的我当然有办法,于是私底下与Objective-C进行PY交易,套出了不少有关Runtime的事情。
Objective-C程序使用Runtime系统的功能可以分为三个层次:
1. 通过OC源代码
2. 通过Foundation框架中的NSObject类定义的方法
3. 直接使用Runtime系统中的方法
大部分时间里,我们只需要编写OC源代码,运行时系统在幕后自动工作。在编译器编译OC程序的时候,编译器负责根据OC的Runtime技能创建数据结构和方法。数据结构包含了类、协议、实例变量模版信息以及方法之间的调用信息。运行时系统中最主要的一个函数就是objc_msgSend,OC源代码中方法调用的形式,最后编译器都会转换成使用它。
大多数类都继承自NSObject,而NSObject有一些方法是在运行时查询对象信息的,这些方法允许对象自己证明自己(自己证明自己是当今最难的问题,但是Runtime可以做到,可见Runtime的强大)。如:isKindOfClass、isMemberOfClass、respondsToSelector、conformsToProtocol、methodForSelector。
Runtime系统是一个动态共享库的一个公共接口,它由一组函数和数据结构组成。这些功能允许你使用纯C语言的形式去调用。Runtime系统大大增加了程序的灵活性。
在深交了Runtime后,我隐约感觉到以后的路,都需要它来陪伴。基情四射的日子将要到来。
关注微信公众号CodingArtist,可以第一时间得到文章更新通知! ^_^