本文主要讲述我对 iOS 开发的一些理解,希望能通过 app 从启动到退出,将一些的知识整合起来,形成一条知识链,目前涉及到的知识点有 runloop、runtime、文件存储、界面布局、离线推送、内存管理、响应链、多线程。但大部分较为浅显,我尽量写自己的理解,专业性的代码尽量贴上链接,如有不当欢迎 ...
分类:
移动开发 时间:
2019-12-12 12:56:43
阅读次数:
93
问题: MRC中通过调用静态方法创建的新对象,不再使用时需要对其发送release消息吗? 不需要,因为约定静态方法创建的对象会自动将其放入自动释放池,即已对其发送autorelease消息,因此不可再对其进行手动释放。MRC中静态方法创建新对象的实现模板如下: 问题: NSRangeExcepti ...
分类:
移动开发 时间:
2019-03-20 21:00:23
阅读次数:
229
常见的面试题:以下代码存在什么样的问题?应该如何改进? for (int i = 0; i < 100000; i++) { NSString *str = @"abc"; str = [str stringByAppendingString:@"xyz"]; } 利用leaks查看内存泄漏情况 可 ...
分类:
其他好文 时间:
2018-07-17 18:01:10
阅读次数:
208
https://www.jianshu.com/p/d2e0dc7bf57f //1.weak 2.automic 3.kvo 4.iso 5.runloop 6.类的本质 7.catetory原理 8.自动释放池 9.associated ...
分类:
其他好文 时间:
2018-07-10 11:14:43
阅读次数:
159
RunLoop 是 iOS 和 OSX 开发中非常基础的一个概念,这篇文章将从 CFRunLoop 的源码入手,介绍 RunLoop 的概念以及底层实现原理。之后会介绍一下在 iOS 中,苹果是如何利用 RunLoop 实现自动释放池、延迟回调、触摸事件、屏幕刷新等功能的。 IndexRunLoop ...
分类:
其他好文 时间:
2018-04-16 18:27:24
阅读次数:
231
当使用Foundation框架中的类来做更多程序处理工作时,需要一个更有弹性的内存管理机制,也就是要使用内存释放池。内存释放池提供了一个对象容器,每次对象发送aotuorelease消息时,对象的引用计数并不真正变化,而是向内存释放池中添加一条记录,民下对象的这种要求。直到当内存释放池发送drain ...
分类:
移动开发 时间:
2018-02-11 10:44:11
阅读次数:
237
背景: 最近项目要做上传图片功能,图片必须是高清的,所以不让压缩,上传图片是大量的,比如几百张,这个如果是用afn,将图片直接for循环加入到formData里会出现一个问题,临时变量太多,导致内存紧张,最后程序奔溃。之前写过用自动释放池解决它,但是还是效果不大。如果上传的多的话,内存还是受不了。 ...
分类:
移动开发 时间:
2017-12-07 17:36:37
阅读次数:
169
RunLoop 是 iOS 和 OSX 开发中非常基础的一个概念,这篇文章将从 CFRunLoop 的源码入手,介绍 RunLoop 的概念以及底层实现原理。之后会介绍一下在 iOS 中,苹果是如何利用 RunLoop 实现自动释放池、延迟回调、触摸事件、屏幕刷新等功能的。 IndexRunLoop ...
分类:
移动开发 时间:
2017-08-16 21:41:31
阅读次数:
277
本条要点:(作者总结) Objective-C 对象的生命期取决于其引用计数(参见第29条)。在 Objective-C 的引用计数架构中,有一项特性叫做“自动释放池”(autorelease pool)。释放对象有两种方式:一种是调用 release 方法,使其保留计数立即递减;另一种是调用 au ...
分类:
其他好文 时间:
2017-08-12 10:29:22
阅读次数:
212
http://draveness.me/autoreleasepool.html 关注仓库,及时获得更新:iOS-Source-Code-Analyze Follow: Draveness · Github 由于 Objective-C 中的内存管理是一个比较大的话题,所以会分为两篇文章来对内存管理 ...
分类:
其他好文 时间:
2017-07-26 14:35:48
阅读次数:
196