程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> 關於C語言 >> Objective-C 內存管理2

Objective-C 內存管理2

編輯:關於C語言

Objective-C 內存管理2


手動內存管理(MRC)中常用的三個方法 retain:導致內存計數+1 release:導致內存計數-1 copy:復制出來一個新的對象 和之前對象的數據可能一致 但是 不是同一個對象 此對象內存計數是1 autorelease:自動釋放 當變量出了自動釋放池之後會自動釋放 自動釋放池在項目中有很多看不見的   屬性描述關鍵字: retain/strong: //如果是retain 會做兩件事 //-(void)setNames:(NSMutableArray *)names{ //    //第一件事把原來的release -1 //    [_names release]; ////    第二件事把新傳遞進來的retain +1 //    _names = [names retain]; //     //     //} 屬性生命時retain加的1 會在當前對象銷毀時 執行dealloc方法的時候 執行release -1   assign/weak: //如果是assign或weak set方法中只做了一件事 //-(void)setAge:(int)age{ //     //    _age = age; //     //}     copy: //如果是copy set方法中做一件事 //-(void)setNames:(NSMutableArray *)names{ //     //    _names = [names copy]; //}   readonly:如果用readonly修飾 會使屬性只生成get方法 沒有set方法   nonatomic:非原子性操作 不安全  效率高 非多線程都用nonatomic atomic:原子性操作 線程安全 效率低 只有多線程訪問數據的時候才有可能會使用此關鍵字   所有的基本數據類型用assign或weak但是因為是默認的 所以什麼都不用寫   所有的對象類型(除了NSString)都用 strong或retain   NSString需要用copy來修飾,為了避免連鎖反應 改變了某一個字符串 導致一系列相關字符串發生改變  

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved