04 2020 档案

摘要:结构体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 阅读(151) 评论(0) 推荐(0)
摘要:MRC下如何重写retain修饰变量的setter方法? @property (nonatomic,retain) id obj; - (void)setObj:(id)obj{//这里为什么要有个对原来对象的判断 其实是非常必要的 假如传入的对象就是原来的对象 执行release的时候 会把原来的 阅读全文
posted @ 2020-04-16 12:07 Justin_mr 阅读(196) 评论(0) 推荐(0)
摘要:读写权限 readonly readwrite 原子性 atomic 赋值和获取是线程安全 例如用atomic修饰一个数组,对这个数组赋值和获取是线程安全的,但是如果操作数组,例如增删元素,那不在atomic有效范围内 nonatomic 引用计数 retain/strong assign(可以修改 阅读全文
posted @ 2020-04-16 11:37 Justin_mr 阅读(133) 评论(0) 推荐(0)
摘要:KVC是key-value coding,键值编码技术 2个方法 是否违背面向对象? 会 因为知道私有key就可以赋值 valueForKey系统流程 valueForKey先找是否实现访问器方法,找到就走调用流程,没找到就找实例变量是否存在,可以根据- (BOOL)accessInstanceVa 阅读全文
posted @ 2020-04-16 10:41 Justin_mr 阅读(198) 评论(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 阅读(280) 评论(0) 推荐(0)
摘要:通知的特点: 使用观察者模式来实现跨层传递消息的机制。 传递方式一对多 流程 发送者经过通知中心发送给多个观察者 如何实现通知机制 NS开头的是看不到源代码的 通知中心维护了一个map表,key是通知的名称,value是一个放着观察者的数组(里面要包括回调方法的信息) 阅读全文
posted @ 2020-04-14 18:05 Justin_mr 阅读(121) 评论(0) 推荐(0)
摘要:代理: 准确的说是一种软件设计模式(代理模式) ios当中以@protocol形式体现。 传递方式一对一。 委托方:把需要代理方实现的属性和方法定义在协议里。调用代理方遵从的协议方法。 代理方:按照协议实现方法,可能返回一个处理结果给委托方。 协议: 可以定义属性和方法。 代理使用的注意点: 一般声 阅读全文
posted @ 2020-04-14 17:23 Justin_mr 阅读(119) 评论(0) 推荐(0)
摘要:一般扩展做什么? 声明私有属性。 声明私有方法。 声明私有成员变量。 特点: 编译时决议。 只以声明的形式存在,多数情况寄生于.m的宿主当中。 不能为系统类添加扩展。 扩展与分类的区别: 分类是运行时决议,扩展是编译时决议。 分类有声明有实现,扩展只有声明,实现是写在宿主类当中。 可以为系统类添加分 阅读全文
posted @ 2020-04-14 16:44 Justin_mr 阅读(125) 评论(0) 推荐(0)
摘要:你用分类做哪些事? 声明私有方法 分解体积庞大的类文件 把Framework的私有方法公开化 特点: 运行时决议(编好分类文件之后并没有实时把写好的方法附加到原来的类上,是在运行时的时候动态添加编写完成的方法) 可以为系统类添加分类 分类都可以添加哪些内容? 实例方法 类方法 协议 属性(只声明ge 阅读全文
posted @ 2020-04-13 16:30 Justin_mr 阅读(316) 评论(0) 推荐(0)
摘要:图像显示原理 CPU和GPU2个硬件通过总线连接起来,cpu输出位图适当时机通过总线传给gpu, gpu用位图用图层的渲染,纹理合成,把结果放到帧缓冲区,由视频控制器根据vSync到帧缓冲区提取内容 显示到屏幕上 创建UIView之后,显示部分是由CALayer负责,CALayer有个content 阅读全文
posted @ 2020-04-13 10:49 Justin_mr 阅读(164) 评论(0) 推荐(0)
摘要:UITableView相关 重用机制 cell = [tableView dequeueReusableCellWithIdentifier:identifier]; 上面代码就是设置重用标识符:UITableView的cell当滚出屏幕的时候就会加入到重用池,当下一个cell滑入屏幕的时候,从重用 阅读全文
posted @ 2020-04-10 13:11 Justin_mr 阅读(181) 评论(0) 推荐(0)
摘要:简洁性: 3到5年(2到3页简历)写重要的表达,多用关键词 真实性:可以包装,不能伪造 包装:量化指标(写具体数值) 前后crash量的变化(例如重构之前crash量是1000,重构之后每天crash控制6个以内) 线上bug量 开发成本 全面性: 联系方式写全面 去过哪个公司就写哪个公司 每个公司 阅读全文
posted @ 2020-04-10 09:15 Justin_mr 阅读(134) 评论(0) 推荐(0)
摘要:swift编译过程 swift代码通过解析编译成中间语法树(AST)再生成中间语言 再通过IR工具生成IR中间表示层,通过LLVM编译.o(可执行文件)。 swiftc 是 swift 语言的编译工具,它可以直接把 .swift 文件编译生成可执行文件,也可以产生编译过程中某个中间文件。 创建一个m 阅读全文
posted @ 2020-04-08 13:05 Justin_mr 阅读(570) 评论(0) 推荐(0)
摘要:1.Swift可以面向协议编程、函数式编程、面向对象编程。 2.Swift是类型安全的,代码中使用字符串String,就不能传递一个整型Int给它。编译时会做类型检查,不匹配的类型会错误标记出来。 3.典型的struct enum tuple都是值类型,Int,Double,Float,String 阅读全文
posted @ 2020-04-08 12:30 Justin_mr 阅读(1510) 评论(0) 推荐(0)
摘要:数据结构是计算机存储、组织数据的方式。 线性结构 线性表是具有n个相同类型元素的有限序列(n>=0) 常见的线性表有 数组 链表 栈 队列 哈希表 手动实现一个动态数组:GitHub链接:https://github.com/iosKey/ArrayList 核心代码: 1 //数组使用,可以添加任 阅读全文
posted @ 2020-04-07 10:42 Justin_mr 阅读(385) 评论(0) 推荐(0)
摘要:算法是什么? 算法是用于解决特定问题的一系列执行步骤,例如简单一个求和公式,也是算法,但是不同的算法,解决同一个问题,效率可能相差非常大。 斐波那契数是什么? 前面两个数的和是下一个数的值。例如:0 1 1 2 3 5 8 13... 1 package com.mj; 2 3 public cla 阅读全文
posted @ 2020-04-04 20:49 Justin_mr 阅读(206) 评论(0) 推荐(0)