Objective-C 記憶體管理2 藍懿教育

來源:互聯網
上載者:User

標籤:ios 劉國斌 藍懿教育 objective—c

手動記憶體管理(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:原子性操作 安全執行緒 效率低 只有多線程訪問資料的時候才有可能會使用此關鍵字


所有的基礎資料型別 (Elementary Data Type)用assign或weak但是因為是預設的 所以什麼都不用寫


所有的物件類型(除了NSString)都用 strong或retain


NSString需要用copy來修飾,為了避免連鎖反應 改變了某一個字串 導致一系列相關字串發生改變












本文出自 “Get” 部落格,請務必保留此出處http://3517465.blog.51cto.com/3507465/1692010

Objective-C 記憶體管理2 藍懿教育

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.