- 博客(4)
- 资源 (1)
- 收藏
- 关注
原创 (译)我们来构造objc_msgSend
objc_msgSend函数是objective-C的基础。有人问objc_msgSend的内部实现,我想最好的理解方式就是手动实现一次。 踏板 例如随便写个方法: [obc message]; 编译器会根据方法生成一个消息函数: objc_msgSend(obj, @selector(message)); objc_msgSend完成message方法的调度。 那么objc_m
2018-04-17 03:00:57 476
原创 Swizzling方法
swizzling是一种能够改变已存在的selector的实现的方法,它通过改变selectors在类的映射表中的映射方式修改Objective-C的方法调用。 举个例子,如果我们想追踪各个viewController对用户展示了多少次,我们可以在每个viewController的viewDidAppear:中添加追踪代码,但是那样会产生大量的重复代码块。也可以通过继承的方式来实现,但是这种方式
2018-04-16 17:16:57 397
原创 meta-class in OC
用runtime创建类 下面的代码是创建了一个NSError的subClass和添加一个方法: Class newClass = objc_allocateClassPair([NSError class], "RuntimeErrorSubClass", 0); /* * Class cls: 将要给添加方法的类,传的类型 [类名 class] * SEL name: 将要添加的方法名,传
2018-04-15 02:07:55 187
原创 iOS9上实现3D Touch功能之快速启动
实现3D Touch快速启动功能有两种方式,一种是静态标签,一种是动态标签。 1、静态标签的实现 静态标签的实现是直接在plist文件中配置相关参数就能实现了。 UIApplicationShortcutItems数组是快速启动项的集合,有几个子项就有多少个快速启动项(不超过四个) UIApplicationShortcutItemType是设置启动项的标识 UIApplic
2016-03-02 15:57:03 845
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人