1.内存管理
用内存引用计数来进行管理;
alloc, retain, copy会使内存引用计数立即+1;
当对象使用结束后要对它进行释放 ,release(立即-1) ,autorelease(未来-1);
autorelease的对象会把这个对象放置到离它最近的自动释放池里,自动释放池释放的时候才会把自动释放池中的所有对象的内存引用计数-1;
当对象被添加到容器里时,内存引用计数+1;
从容器里移除时,内存引用计数-1.
2.视图控制器的执行顺序
1.alloc 创建对象,分配内存;
2.init 初始化;
3.loadView 创建视图(如果没有使用xib,storyboard可以重写);
4.viewDidLoad 与loadView配套使用
5.viewWillAppear 视图创建完成,将要显示
6.viewDidAppear 视图已经显示
7.viewWillDisappear 用于切换界面
8.viewDidDisappear 用于切换界面
9.dealloc 视图被销毁,释放创建的对象
3.类的扩展
继承 类目 延展 协议
1.类目 Category
命名 : @interface 要扩展的类名 (类目名) ~~ @end
特点 : 1.不可定义成员变量,而且一般不定义属性
2.可以添加方法,可重写原始类的方法,原始类的对象调用
2.延展 Extension
命名 : 写在.m文件里 @interface 类名 () ~~ @end
特点 : 1.添加类的私有属性和方法;
3.协议 Protocol
命名 : @protocol 协议名 <NSObject> ~~ @end
@required 不写是默认的,必须实现 @optional 可实现可不实现
特点 : 1.只声明,不实现
2.为了解决多继承问题
3.@property (nonatomic, assign) id<协议名> delegate;
assign 为了防止循环拥的释放问题
4.TableView代理的执行顺序
1.UItableViewDataSource numberOfSectionsInTableView 确定有几个分区
2.UItableViewDataSource numberOfRowsInSection 每个分区有几行
3.UItableViewDataSource cellForRowAtIndexPath 确定每行的cell
4.UITableViewDelegate didSelectRowAtIndexPath 转中改行,进入下一界面
5.单例
单例 一个类只有一个实例,自行实例化并向整个系统提供这个实例,一个单例类可以实现在不同的窗口之间传递数据。
1. 内存为1且只初始化一次
2. 永远不释放
3. 任何地方都可以使用
4. 多个界面的公共传值
6.数据存储
内存
简单数据 : NSString, NSDictionary, NSArray, NSData
NSArray *array = NSSearchPathForDirectoriesInDomains(NSLibraryDirectory, NSUserDomainMask, YES);
NSString *library = [array firstObject];
library = [NSString stringWithFormat:@"%@/number", library];
NSString *string = @"123456789";
[string writeToFile:library atomically:YES encoding:NSUTF8StringEncoding error:nil];
复杂数据 : 系统提供之外的类型(也就是model类)
复杂数据存储原理 : 将model类型的对象归档(序列化) 为NSData类型的对象,然后将NSData类型对象进行存储
硬盘 NSFileManager 管理硬盘上的东西
沙盒机制 ,是ios的安全机制
1. Bundle文件夹 里面有 ---> (1)代码 * (2)资源文件夹 * (3)配置文件
特性 : (1) 内容在程序运行期间为只读,不能够进行任何的修改
(2) 只有在开发期间进行修改
2. Documents文件夹
特性 : (1)大小限制(文件夹里的内容会自动上传到iCloud里)
(2)一般放数据库
(3)整个应用程序,从开始到删除一直存在的东西
3. Library文件夹 里面有 ---> (1)Caches[缓存] * (2)Preference[配置]
(1)Caches 特性: 1. 放图片缓存
2. 网络数据存储(缓存)
(2)Preference 特性: NSUserDefaults存到preference里
4. tmp文件夹 临时性文件夹 ---> 数据只用一次,即用完就删
例如 : 把压缩包解压, 解压完的东西放在tmp里