[关闭]
@chinese-ppmt 2018-04-16T05:22:08.000000Z 字数 694 阅读 861

iOS'Special之runtime API必备手册

iOS'Special


runtime的知识,由于不经常使用,很多东西每次使用都要查询确认后才放心,自己整理一下,方便自己查阅,也分享出来供大家参考。

2017-12-21

声明

  1. 文章分部分备注,把常用的彼此有关联的放一起。
  2. 为了更好展示效果,部分代码可能不是所给链接里面的位置。

第一部分

一.① class_addMethod

class_addMethod注释.png

一.② method_getTypeEncoding

method_getTypeEncoding注释.png

重难点分析

重难点:class_addMethod的第四个参数types,视语言环境(COC)而定:

C :

C环境class_addMethod.png

上图代码链接


OC :

OC环境class_addMethod.png

上图代码链接

第一部分的重难点的图分析已上,下面将用文字再做介绍:

C: types参数,如:"i@:r^vr^v""i@:@"等,更多请参看下面的链接23.
OC: method_getTypeEncoding使用,不懂参考上面对应的图。

Type Encodings的参考链接:

  1. 苹果官方Type Encodings,
  2. [译]类型编码(Type Encodings),
  3. Type Encodings(NSHipster翻译).

第二部分

二.① objc_setAssociatedObject

objc_setAssociatedObject注释.png

二.② objc_getAssociatedObject

objc_getAssociatedObject注释.png

重难点分析

重难点:objc_setAssociatedObject的第二个参数key
第二部分key参数.png
上图截取自:Objective-C Associated Objects 的实现原理

应用实例

实例1. UIButton点击时间间隔

第二部分关联.png

上图代码链接

实例2. UIButtonblock点击事件

第二部分btn点击block.png

上图代码链接

可参考:
1. iOS'Special之 _cmd 和 @()

添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注