摘要: 如何实现一个多线程 runloop是通过内部维护的事件循环来对事件/消息进行管理的一个对象 事件循环 没有消息需要处理时进行休眠防止资源占用,即使线程从用户态转化为内核态 有消息需要处理时立刻被唤醒,即使线程从内核态转化为用户态 在main函数中会调用一个UIApplication函数,该函数中会启 阅读全文
posted @ 2019-12-04 09:50 鄙人浪淘沙 阅读(168) 评论(0) 推荐(0) 编辑
摘要: 由于NSTimer会持有我们设置的target对象,而RunLoop也会对timer对象持有,主线程的RunLoop是一直存在的,即便设置为weak属性timer也不会被释放,所以在上面的方式添加定时器时会造成内存的泄露,解决上面的问题可以通过将timer设置为属性在对象即将消失的方法中对timer 阅读全文
posted @ 2019-12-02 21:19 鄙人浪淘沙 阅读(425) 评论(0) 推荐(0) 编辑
摘要: 在MRC情况下对block外的对象加上__block有两个作用: 说明变量可修改 说明指针指向的对象不做隐式的retain操作 在ARC情况下即便对对象加上了__block,因为__block只声明该对象可以修改,一个对block捕获的也是对象也是一个强引用,所以这时就要对对象手动释放,否则依旧会造 阅读全文
posted @ 2019-11-01 10:21 鄙人浪淘沙 阅读(170) 评论(0) 推荐(0) 编辑
摘要: MGJRouter源码解析 MGJRouter是实现iOS组件间交互的工具之一,路由的使用降低了不同模块之间的耦合度,提高代码的复用率以及不同模块间重组的灵活度,下面我就针对MGJRouter说一下自己的理解: 注册 routes主要用于存储已经注册过的路径及block 下面三个方法是注册时对URL 阅读全文
posted @ 2019-10-15 10:55 鄙人浪淘沙 阅读(1256) 评论(0) 推荐(0) 编辑
摘要: 在运行项目到手机之前将Build Settings中的Debug Information Format修改为DWARF with dSYM File,这个选项决定了记录debug信息的文件格式。其中DWARF是较老的文件格式,会在编译时将debug信息写在执行文件中。不设置为DWARF with d 阅读全文
posted @ 2019-10-02 19:23 鄙人浪淘沙 阅读(421) 评论(0) 推荐(0) 编辑
摘要: 沙盒机制 每一个iOS应用程序都会为自己创建一个文件系统目录,这个独立、封闭、安全的空间叫做沙盒。沙盒就是一种安全体系,它规定了应用程序只能在自己的文件系统目录内访问文件,不可以访问其他应用沙盒内的内容。所有的非代码文件都保存在这个地方。 沙盒根目录结构:Documents、Library(Cach 阅读全文
posted @ 2019-09-26 11:34 鄙人浪淘沙 阅读(866) 评论(0) 推荐(0) 编辑
摘要: objc_object: 我们平时所使用的数据结构都是id类型的,对应到runtime中的类型是objc_object,其中包含isa_t、关于isa操作相关的方法、弱引用相关的方法、关联对象相关的方法、内存管理相关的方法 objc_class:我们在OC中使用的Class在runtime中对应ob 阅读全文
posted @ 2019-09-20 17:55 鄙人浪淘沙 阅读(244) 评论(0) 推荐(0) 编辑
摘要: http 超文本传输协议 http的请求方式? get、post、head、put、delete、options get和post方式的区别 get请求参数长度限制2048个字符,post一般没有限制 get请求参数拼接到url后面,post请求参数在body里面 get请求不安全,post请求比较 阅读全文
posted @ 2019-09-17 18:39 鄙人浪淘沙 阅读(148) 评论(0) 推荐(0) 编辑
摘要: Category 你用分类都做了哪些事情? 声明私有方法 分解体积庞大的类文件 把Framework的私有方法公开 特点 在运行时决议,也就是在编译时并没有把Category中声明的内容添加到宿主类中,而是在运行的时候通过runtime将添加的方法添加到宿主类上面 可以为系统添加分类 分类中可以添加 阅读全文
posted @ 2019-09-17 18:35 鄙人浪淘沙 阅读(222) 评论(0) 推荐(0) 编辑
摘要: 在日常开发及测试中很容易出现比较难以复现的崩溃,这种bug往往让我们无处下手,日志抓取帮我们很好的解决了这个问题。 DDLog的使用 首先可以在pch文件中定义log等级 在application:didFinishLaunchingWithOptions方法中调用如下代码即可发起日志记录功能 崩溃 阅读全文
posted @ 2019-09-03 12:28 鄙人浪淘沙 阅读(674) 评论(0) 推荐(0) 编辑