內(nèi)存管理的思考方式

  • 自己生成的對象,自己持有
  • 非自己生成的對象,自己也能持有
  • 不再需要自己持有的對象時釋放
  • 非自己持有的對象無法釋放
生成并持有對象         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];
/*
   取得的對象存在,但自己不持有對象
*/
最后編輯于
?著作權歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容