OCオブジェクトのメモリ管理
1006 ワード
一.原理
NSObjectを継承したオブジェクトには、参照カウンタと呼ばれる関連する整形変数があります.カウンタの値が0の場合のみ、OCはそのオブジェクトを回収します.そうしないと、回収されません.
1.オブジェクトの作成時にalloc,new,copyを使用する場合、参照カウンタの値は1
2.releaseメソッドを使用してリリースする場合、カウンタの値は1減少する
3.retainメソッドを使用する場合、カウンタの値に1を加算
4.オブジェクトが回収されると、オブジェクトのdeallocメソッドが自動的に呼び出され、
5.retainCountメソッドを使用して参照カウンタの値を取得
二.メモリ漏洩防止基準例の書き方:
以上のメモリ漏洩の処理は、@propertyパラメータretainキーワードで直接以下のように簡単に書くことができます.
NSObjectを継承したオブジェクトには、参照カウンタと呼ばれる関連する整形変数があります.カウンタの値が0の場合のみ、OCはそのオブジェクトを回収します.そうしないと、回収されません.
1.オブジェクトの作成時にalloc,new,copyを使用する場合、参照カウンタの値は1
2.releaseメソッドを使用してリリースする場合、カウンタの値は1減少する
3.retainメソッドを使用する場合、カウンタの値に1を加算
4.オブジェクトが回収されると、オブジェクトのdeallocメソッドが自動的に呼び出され、
5.retainCountメソッドを使用して参照カウンタの値を取得
二.メモリ漏洩防止基準例の書き方:
@class Book;
@interface Student : NSObject
@property Book *book;
@end
#include "Book.h"
@implementation Student
//
- (void)setBook:(Book *)book{
if(_book!=book){
[_book release];
_book = [book retain];
}
}
- (Book *)book{
return _book;
}
- (void)dealloc{
[_book release];// _book
[super dealloc];
}
@end
以上のメモリ漏洩の処理は、@propertyパラメータretainキーワードで直接以下のように簡単に書くことができます.
@class Book;
@interface Student : NSObject
@property (retain) Book *book;//OC set
@end