进行iOS开发历程,会一一介绍改苹果开发的各个功能及使用方法,进行自我提升及新手教程
开发工具就不介绍了,没什么说的(基本都是用Xcode,用appCode也基本一样).开发流程按照如下图进行.根据@M了个J的iOS学习线路图进行,C语言就不介绍了,本人C语言不是很好,直接从Objective-C开始进行.有错误的欢迎指正.
面向对象:
Objective-C是基于C语言的面向对象语言,什么是面向对象可自行百度.
内存管理:
内存中的五大区域分别是:栈区/堆区/BSS段/数据段/代码段.
栈区: 存储局域变量,当用到的东西执行完毕,会立刻进行回收,
堆区: 存储OC对象,手动申请的空间,需要手动释放(除了堆区,其他区域存储的对象,都是由系统自动释放的,堆区的OC对象,是不会自动释放的,如果不自动释放,将会在程序结束时进行释放)
BSS段: 未初始化的全局变量和静态变量,一旦初始化就会从BSS段中回收掉,转存到数据段中.
数据段: 存储已经初始化的全局变量和静态变量,以及常量数据,直到结束程序时才会被立即收回
代码段: 存储代码,知道程序结束,才会被收回
引用计数: 每一个OC对象都有一个属性retainCount,就是引用计数器,数据类型为unsigned long,占据8个字节,每一个对象负责维护对象所引用的记数值,当一个新的引用指向对象,那么这个对象的引用值增加1,当创建一个对象,该对象的retainCount默认为1,当这个对象被少一次引用的时候那么就先让这个对象的引用记数值减1,当这个对象所引用的记数值为0的时候(可能该对象不为0,可能为-1或者其他负数,判断该对象是否被引用,不能拿0来判断),代表这个对象没有被使用,这时系统会自动回收掉此对象,回收这个对象的同时自动调用这个对象的dealloc方法.
引用计数规则: 创建一个对象,该对象的引用计数默认为1;为对象发送一条retain消息,该对象引用计数+1;为对象发送一条release,该对象的引用计数-1.
内存管理分类(ARC/MRC): ARC为自动引用计数,系统自动为你改变引用计数释放内存, MRC为手动引用计数,需要手动释放内存
内存管理原则(MRC): 谁创建对象,谁就需要进行release, 谁发送了retain ,谁就需要对该对象进行release.
野指针: 在OC中,一个指针指向的对象被释放了,那个这种情况就叫做也只指针
内存泄漏: retain和release需要成对出现 不要随便为一个指针赋值nil,除非该指针为野指针. 在方法中不要随意传入对象进行retain,