摘要: 结构体objc_object就是我们常用的id类型 objc_object包括 isa_t isa操作相关 弱引用相关 关联对象相关 内存管理相关 objc_class结构体对应我们平常使用的Class objc_class继承自objc_object 包括 Class superClass; ca 阅读全文
posted @ 2020-04-16 21:23 Justin_mr 阅读(145) 评论(0) 推荐(0) 编辑
摘要: MRC下如何重写retain修饰变量的setter方法? @property (nonatomic,retain) id obj; - (void)setObj:(id)obj{//这里为什么要有个对原来对象的判断 其实是非常必要的 假如传入的对象就是原来的对象 执行release的时候 会把原来的 阅读全文
posted @ 2020-04-16 12:07 Justin_mr 阅读(188) 评论(0) 推荐(0) 编辑
摘要: 读写权限 readonly readwrite 原子性 atomic 赋值和获取是线程安全 例如用atomic修饰一个数组,对这个数组赋值和获取是线程安全的,但是如果操作数组,例如增删元素,那不在atomic有效范围内 nonatomic 引用计数 retain/strong assign(可以修改 阅读全文
posted @ 2020-04-16 11:37 Justin_mr 阅读(127) 评论(0) 推荐(0) 编辑
摘要: KVC是key-value coding,键值编码技术 2个方法 是否违背面向对象? 会 因为知道私有key就可以赋值 valueForKey系统流程 valueForKey先找是否实现访问器方法,找到就走调用流程,没找到就找实例变量是否存在,可以根据- (BOOL)accessInstanceVa 阅读全文
posted @ 2020-04-16 10:41 Justin_mr 阅读(192) 评论(0) 推荐(0) 编辑
摘要: 什么是KVO? kvo是key-value observing的缩写,是oc对观察者设计模式的又一实现 Apple使用isa混写(isa-swizzing)来实现KVO。 KVO原理 addObserve forKeyPath的时候调用系统观察者观察A类的成员变量 运行时动态创建原来类的子类NSKV 阅读全文
posted @ 2020-04-15 14:39 Justin_mr 阅读(265) 评论(0) 推荐(0) 编辑
摘要: 通知的特点: 使用观察者模式来实现跨层传递消息的机制。 传递方式一对多 流程 发送者经过通知中心发送给多个观察者 如何实现通知机制 NS开头的是看不到源代码的 通知中心维护了一个map表,key是通知的名称,value是一个放着观察者的数组(里面要包括回调方法的信息) 阅读全文
posted @ 2020-04-14 18:05 Justin_mr 阅读(116) 评论(0) 推荐(0) 编辑
摘要: 代理: 准确的说是一种软件设计模式(代理模式) ios当中以@protocol形式体现。 传递方式一对一。 委托方:把需要代理方实现的属性和方法定义在协议里。调用代理方遵从的协议方法。 代理方:按照协议实现方法,可能返回一个处理结果给委托方。 协议: 可以定义属性和方法。 代理使用的注意点: 一般声 阅读全文
posted @ 2020-04-14 17:23 Justin_mr 阅读(112) 评论(0) 推荐(0) 编辑
摘要: 一般扩展做什么? 声明私有属性。 声明私有方法。 声明私有成员变量。 特点: 编译时决议。 只以声明的形式存在,多数情况寄生于.m的宿主当中。 不能为系统类添加扩展。 扩展与分类的区别: 分类是运行时决议,扩展是编译时决议。 分类有声明有实现,扩展只有声明,实现是写在宿主类当中。 可以为系统类添加分 阅读全文
posted @ 2020-04-14 16:44 Justin_mr 阅读(121) 评论(0) 推荐(0) 编辑
摘要: 你用分类做哪些事? 声明私有方法 分解体积庞大的类文件 把Framework的私有方法公开化 特点: 运行时决议(编好分类文件之后并没有实时把写好的方法附加到原来的类上,是在运行时的时候动态添加编写完成的方法) 可以为系统类添加分类 分类都可以添加哪些内容? 实例方法 类方法 协议 属性(只声明ge 阅读全文
posted @ 2020-04-13 16:30 Justin_mr 阅读(303) 评论(0) 推荐(0) 编辑
摘要: 图像显示原理 CPU和GPU2个硬件通过总线连接起来,cpu输出位图适当时机通过总线传给gpu, gpu用位图用图层的渲染,纹理合成,把结果放到帧缓冲区,由视频控制器根据vSync到帧缓冲区提取内容 显示到屏幕上 创建UIView之后,显示部分是由CALayer负责,CALayer有个content 阅读全文
posted @ 2020-04-13 10:49 Justin_mr 阅读(145) 评论(0) 推荐(0) 编辑