<1>内存管理--ARC(automatic reference counting)
1. ARC是编译器的一个特性(编译器检测到有retain/alloc 等 这些关键字,就会自动的加入相应的release/autorelease等 )
2. ARC的判断准则:只要没有强指针指向对象,就会释放对象(即使有弱指针指向对象,该对象也会被回收/销毁)
3. ARC特点:
1> 不允许调用release/retain/retainCount
2> 允许重写dealloc方法,但是不允许调用[super dealloc]
3> @property的参数
* strong : 成员变量是强指针(适用于OC对象类型)------使用ARC后,改为:@property (nonatomic, strong) NSString *name; // Dog *name; Person *person;
* weak : 成员变量是弱指针(适用于OC对象)
* assign : 适用于非OC对象类型
4> 以前的retain改为strong(使用ARC机制后)
4. OC的指针分两种:强指针和弱指针
1> 强指针:默认情况下,所有的指针都是强指针 __strong (两个下划线)
2> 弱指针:__weak (两个下划线)
<2>内存管理--Xcode的ARC转换(Xcode的一些功能)
1. 非ARC转ARC(使非ARC项目文件转成ARC项目文件)
Edit —> Refactor —> Convert to Objective-C ARC
2. 怎么查看项目是不是ARC
点击项目 —> Build Setting
3. 也可以部分文件使用ARC,部分文件不使用ARC
-fno-objc-arc // 不使用ARC
-f-objc-arc // 使用ARC
怎么修改? 点击项目 —> Build Phases —> Compile Sources —> 使用上面两条命令修改
<3>内存管理--weak的使用/作用
weak的使用场景:当涉及到循环引用时,应该一端使用strong,一端使用weak。如果两端都适用strong,那么最后会有内存泄漏(对象无法被回收),如果两端都使用weak,则对象刚创建就被回收,刚创建就被回收(无意义)
1. ARC是编译器的一个特性(编译器检测到有retain/alloc 等 这些关键字,就会自动的加入相应的release/autorelease等 )
2. ARC的判断准则:只要没有强指针指向对象,就会释放对象(即使有弱指针指向对象,该对象也会被回收/销毁)
3. ARC特点:
1> 不允许调用release/retain/retainCount
2> 允许重写dealloc方法,但是不允许调用[super dealloc]
3> @property的参数
* strong : 成员变量是强指针(适用于OC对象类型)------使用ARC后,改为:@property (nonatomic, strong) NSString *name; // Dog *name; Person *person;
* weak : 成员变量是弱指针(适用于OC对象)
* assign : 适用于非OC对象类型
4> 以前的retain改为strong(使用ARC机制后)
4. OC的指针分两种:强指针和弱指针
1> 强指针:默认情况下,所有的指针都是强指针 __strong (两个下划线)
2> 弱指针:__weak (两个下划线)
<2>内存管理--Xcode的ARC转换(Xcode的一些功能)
1. 非ARC转ARC(使非ARC项目文件转成ARC项目文件)
Edit —> Refactor —> Convert to Objective-C ARC
2. 怎么查看项目是不是ARC
点击项目 —> Build Setting
3. 也可以部分文件使用ARC,部分文件不使用ARC
-fno-objc-arc // 不使用ARC
-f-objc-arc // 使用ARC
怎么修改? 点击项目 —> Build Phases —> Compile Sources —> 使用上面两条命令修改
<3>内存管理--weak的使用/作用
weak的使用场景:当涉及到循环引用时,应该一端使用strong,一端使用weak。如果两端都适用strong,那么最后会有内存泄漏(对象无法被回收),如果两端都使用weak,则对象刚创建就被回收,刚创建就被回收(无意义)