OC基础—内存管理之多对象内存管理
2014-04-26 10:33
197 查看
------ android培训、java培训、期待与您交流! ----------
多对象内存管理
1. 多个对象之间的内存管理遵循的原则:
* 你想使用某个对象,就应该让对象的计数器+1 retain一次
* 你不想在使用某个对象,就应该让对象的计数器-1 release一次
* 谁retain,谁release
* 谁alloc, 谁release
2. 举一个例子:
下面会的Person类包含了Book类(组合),要求只要有Person需要Book那么Book就不会被回收。
**********************main函数**********************
**********************Book类************************
*****************************Person类*************************
这里 [_book release]; 就是遵守内存管理的原则:你不想在使用某个对象,就应该让对象的计数器-1 release一次。
------ android培训、java培训、期待与您交流! ----------
多对象内存管理
1. 多个对象之间的内存管理遵循的原则:
* 你想使用某个对象,就应该让对象的计数器+1 retain一次
* 你不想在使用某个对象,就应该让对象的计数器-1 release一次
* 谁retain,谁release
* 谁alloc, 谁release
2. 举一个例子:
下面会的Person类包含了Book类(组合),要求只要有Person需要Book那么Book就不会被回收。
**********************main函数**********************
#import <Foundation/Foundation.h> #import "Book.h" #import "Person.h" int main( ) { Book *b = [[Book alloc] init]; b.price = 30; Person *p = [[Person alloc] init]; // p用这本书 p.book = b; // 这里是有个新对象_book产生 [b release]; // 上面的b不想用了 b = nil; // 把变量b清空 [p release]; // person 的计数器为0 p调用alloc方法 book被回收 p = nil; // b.release; return 0; }
**********************Book类************************
#import <Foundation/Foundation.h> @interface Book : NSObject { int _price; } - (void)setPrice:(int)price; - (int)price; @end
#import " a329 Book.h" @implementation Book - (void)setPrice:(int)price { _price = price; } -(int)price { return _price; } - (void)dealloc { NSLog(@"book对象被回收"); [super dealloc]; } @end
*****************************Person类*************************
#import <Foundation/Foundation.h> #import "Book.h" @interface Person : NSObject { Book *_book; } - (void)setBook:(Book *)book; - (Book *)book; @end
#import "Person.h" @implementation Person - (void)setBook:(Book *)book { _book = [book retain]; } - (Book *)book { return _book; } - (void)dealloc { [_book release]; // 这里是一个注意点 NSLog(@"person对象被回收"); [super dealloc]; } @end
这里 [_book release]; 就是遵守内存管理的原则:你不想在使用某个对象,就应该让对象的计数器-1 release一次。
------ android培训、java培训、期待与您交流! ----------
相关文章推荐
- 黑马程序员_OC基础10_内存管理(多对象)
- 蓝鸥iOS从零基础到精通就业-OC语言入门 对象内存管理1
- 蓝鸥iOS从零基础到精通就业-OC语言入门 对象内存管理2
- oc基础-oc中单个对象的内存管理的一些基础知识
- 蓝鸥iOS从零基础到精通就业-OC语言入门 对象内存管理3
- 黑马程序员——OC基础---内存管理(引用计数器,多对象内存管理,set方法的内存管理,模型设计,循环引用)
- 蓝鸥iOS从零基础到精通就业-OC语言入门 对象内存管理4
- OC基础语法<1.2> 入门面向对象语法-构造方法和description
- 【ObjC那点儿事儿】OC对象内存管理 MRR
- 每日一练:OC中的对象概念-堆的内存管理
- OC基础之对象归档与读取文件
- CORBA对象生命周期之实现和内存管理-Java基础-Java-编程开发
- OC基础教程6-对象初始化
- iOS开发之OC语法基础(四)--内存管理
- OC中内存管理(MRC)--多对象管理
- 黑马程序员----oc基础笔记----类和对象
- OC基础-野指针和僵尸对象22
- 黑马程序员-IOS-OC基础-面向对象语法一
- OC基础:内存结构与内存管理
- OC基础(三)内存管理