随笔分类 -  oc

摘要:概述 从前面的博文我们也可以看到,数组和字典中只能存储对象类型,其他基本类型和结构体是没有办法放到数组和字典中的,当然你也是无法给它们发送消息的也就是说有些NSObject的方法是无法调用的,这个时候通常会用到装箱boxing和拆箱unboxing。 其实各种高级语言基本上都有装箱和拆 箱的过程,例 阅读全文
posted @ 2018-12-04 11:27 zzfx 阅读(244) 评论(0) 推荐(0) 编辑
摘要:运行时系统包含两个系统: 1、运行时类型系统:内省、反射; 2、运行时派发(调用、绑定、消息路由、上下文绑定)系统; 动态派发体统依赖于运行时类型系统; 对数据结构+算法 分别作出了规范; 运行时系统是一个解释系统。 阅读全文
posted @ 2018-11-14 18:30 zzfx 阅读(247) 评论(0) 推荐(0) 编辑
摘要:动态语言关于类型和结构的功能,是的该语言天然具有解释器的功能。 将平凡数据解释为语言兼容结构--类型映射; 将功能字符串解释为函数执行--功能热更新; 将功能字符串桥接为寄生语言执行--oc<->js; 将已有的第三方(不可物理修改)功能重新解释执行--方法修改; 将已存在的类型解释为新的类型 is 阅读全文
posted @ 2018-11-14 17:13 zzfx 阅读(152) 评论(0) 推荐(0) 编辑
摘要:Objective-C 的动态性是由 runtime 相关的库赋予的。 当然其他语言也完全可以运行在一个 Runtime 库上而获得动态性,由于多数高级语言的诞生都对应着一种编译器,因此将编译器的特性概括进语言里讲,也不是不可以。 http://www.cocoachina.com/ios/2016 阅读全文
posted @ 2018-09-19 16:01 zzfx 阅读(291) 评论(0) 推荐(0) 编辑
摘要:目录 Non Fragile ivars 为什么Non Fragile ivars很关键 如何寻址类成员变量 真正的“如何寻址类成员变量” Non Fragile ivars布局调整 为什么Objective-C类不能动态添加成员变量 总结 版权声明: 版权声明: 看下面的代码,考虑Objectiv 阅读全文
posted @ 2018-06-15 13:25 zzfx 阅读(859) 评论(0) 推荐(0) 编辑
摘要:Block Functionality A block is an anonymous inline collection of code that: Has a typed argument list just like a function Has an inferred or declared 阅读全文
posted @ 2018-06-05 18:57 zzfx 阅读(100) 评论(0) 推荐(0) 编辑
摘要:NSRunloop是一个消息处理机制;是一个循环。 系统通过消息队列和runloop与进程(线程)通信。 runloop是一个机制和体系结构。 它包含以下几个方面: 1、事件源管理; 2、事件的检索与派发循环机制; 3、运行模式、嵌套运行; 4、线程间通信。 事件源 事件源包含以下几个方面: 1、流 阅读全文
posted @ 2018-04-18 11:25 zzfx 阅读(104) 评论(0) 推荐(0) 编辑
摘要:NSPort与NSRunloop的关系是流与消息调度的关系。 NSPort 将流插入到消息调度队列; 相当于 Socket将流插入到应用一样 - (void)launchThread { NSPort *myport = [NSMachPort port]; if(myport) { //让本类持有 阅读全文
posted @ 2018-04-17 16:22 zzfx 阅读(1629) 评论(0) 推荐(0) 编辑
摘要:oc语言的特点分为以下几个方面: 1、运行时; 2、block闭包; 3、内存管理; 4、大中枢派发; 一、运行时的基础是isa 类结构;由clang编译前端支撑。 从它衍生出以下几个特征: 1、消息派发; 2、消息转发机制; 3、KVO、KVC机制; 4、内省机制; 5、分类、类别机制; 6、sw 阅读全文
posted @ 2018-04-11 16:08 zzfx 阅读(466) 评论(0) 推荐(0) 编辑
摘要:类:与类型等价、是内存中的一个结构 类对象:isa、对类本体的引用。 实例对象:数据。 类具有双重属性: 既是类型结构,也是对象。 这个一个哲学的问题。 涉及到等价性与不完备对象。 阅读全文
posted @ 2018-03-29 19:36 zzfx 阅读(706) 评论(0) 推荐(0) 编辑
摘要:自旋锁的本质是持续占有cpu,直到获取到资源。与其他锁的忙等待的实现机制不同。 昨天有位开发者在 Github 上给我提了一个 issue,里面指出 OSSpinLock 在新版 iOS 中已经不能再保证安全了,并提供了几个相关资料的链接。我仔细查了一下相关资料,确认了这个让人不爽的 bug。 OS 阅读全文
posted @ 2018-03-14 17:48 zzfx 阅读(394) 评论(0) 推荐(0) 编辑
摘要:核心是:将标示对象与锁建立关联。 线程 锁 标识; 异常; NSString *test = @"test"; @try { // Allocates a lock for test and locks it objc_sync_enter(test); test = nil; } @finally 阅读全文
posted @ 2018-03-14 15:16 zzfx 阅读(175) 评论(0) 推荐(0) 编辑
摘要:As mentioned earlier, the default behavior for a writeable property is to use an instance variable called _propertyName. If you wish to use a differen 阅读全文
posted @ 2018-02-06 14:41 zzfx 阅读(161) 评论(0) 推荐(0) 编辑
摘要:nil的处理展示出消息机制的优越性,相对于函数调用的空指针处理。 ENTRY objc_msgSend # check whether receiver is nil teq a1, #0 itt eq moveq a2, #0 bxeq lr # save registers and load r 阅读全文
posted @ 2018-02-06 13:04 zzfx 阅读(173) 评论(0) 推荐(0) 编辑
摘要:消息发送:对象处理消息; 消息发送的selector作为消息的一部分,在对象的运行时底层参与了消息分发,最终完成动态函数调用。 objc_msgSend(void /* id self, SEL op, ... */ ) id objc_msgSend ( id self, SEL op, ...  阅读全文
posted @ 2018-02-02 11:58 zzfx 阅读(233) 评论(0) 推荐(0) 编辑
摘要:void *objc_destructInstance(id obj){ if (obj) { Class isa_gen = _object_getClass(obj); class_t *isa = newcls(isa_gen); // Read all of the flags at onc 阅读全文
posted @ 2018-02-01 21:26 zzfx 阅读(344) 评论(0) 推荐(0) 编辑
摘要:我们在 iOS 开发中经常需要使用分类(Category),为已经存在的类添加属性的需求,但是使用 @property 并不能在分类中正确创建实例变量和存取方法。 不过,通过 Objective-C 运行时中的关联对象,也就是 Associated Object,我们可以实现上述需求。 写在前面 这 阅读全文
posted @ 2018-02-01 20:45 zzfx 阅读(156) 评论(0) 推荐(0) 编辑
摘要:我是前言 这次探索源自于自己一直以来对ARC的一个疑问,在MRC时代,经常写下面的代码: 对象析构时将内部其他对象release掉,申请的非Objc对象的内存当然也一并处理掉,最后调用super,继续将父类对象做析构。而现如今到了ARC时代,只剩下了下面的代码: 问题来了: ARC文档中对deall 阅读全文
posted @ 2018-02-01 20:06 zzfx 阅读(354) 评论(0) 推荐(0) 编辑
摘要:extension看起来很像一个匿名的category,但是extension和有名字的category几乎完全是两个东西。 extension在编译期决议,它就是类的一部分,在编译期和头文件里的@interface以及实现文件里的@implement一起形成一个完整的类,它伴随类的产生而产生,亦随 阅读全文
posted @ 2018-02-01 20:02 zzfx 阅读(117) 评论(0) 推荐(0) 编辑
摘要:在继承体系中,多个子类的引用,父类缺省执行一次; 特殊情况: 1)子类没有实现、调用父类方法; 2)子类显示调用父类; 3)存在分类实现,分类实现覆盖本体。 Initializes the class before it receives its first message. The runtime 阅读全文
posted @ 2018-02-01 15:37 zzfx 阅读(125) 评论(0) 推荐(0) 编辑