- 博客(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
465
原创 Swizzling方法
swizzling是一种能够改变已存在的selector的实现的方法,它通过改变selectors在类的映射表中的映射方式修改Objective-C的方法调用。举个例子,如果我们想追踪各个viewController对用户展示了多少次,我们可以在每个viewController的viewDidAppear:中添加追踪代码,但是那样会产生大量的重复代码块。也可以通过继承的方式来实现,但是这种方式
2018-04-16 17:16:57
376
原创 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
181
原创 iOS9上实现3D Touch功能之快速启动
实现3D Touch快速启动功能有两种方式,一种是静态标签,一种是动态标签。1、静态标签的实现静态标签的实现是直接在plist文件中配置相关参数就能实现了。UIApplicationShortcutItems数组是快速启动项的集合,有几个子项就有多少个快速启动项(不超过四个)UIApplicationShortcutItemType是设置启动项的标识UIApplic
2016-03-02 15:57:03
833
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人