- 自己生成的對象,自己持有
- 非自己生成的對象,自己也能持有
- 不再需要自己持有的對象時釋放
- 非自己持有的對象無法釋放
生成并持有對象 alloc/new/copy/mutableCopy
持有對象 retain
釋放對象 release
廢棄對象 dealloc
自己生成的對象,自己持有
- alloc
- new
- copy
- mutableCopy
/*
自己生成并持有對象
[[NSObject alloc] init] 與 [NSObject new] 是完全一致的
*/
id obj = [[NSObject alloc] init];
id obj = [NSObject new];
copy方法利用基于NSCopying方法約定,由各類實現(xiàn)的copyWithZone:方法生成并持有對象的副本.與copy方法類似,mutableCopy方法利用基于NSMutableCopying方法約定,由各類方法實現(xiàn)的mutableCopyWithZone:方法生成并持有對象德爾副本.兩者區(qū)別在于,copy方法生成不可變更得對象,而mutableCopy方法生成可變的對象.這類似于NSArray類對象與NSMutableArray類對象的差異.用這些方法生成的對象,雖然是對象的副本,但同alloc,new方法一樣,在"自己生成并持有對象"這點上沒有改變.
非自己生成的對象,自己也能持有
/*
取得非自己生成并持有的對象
*/
id obj = [NSMutableArray array];
/*
取得的對象存在,但自己不持有對象
*/