標籤:藍懿教育 劉國斌 ios 培訓
幾天又上了一天課 學習了檔案管理的內容,以及留了一個相簿的作業
還複習了記憶體管理的內容:
手動記憶體管理(MRC)中常用的三個方法
retain:導致記憶體計數+1
release:導致記憶體計數-1
copy:複製出來一個新的對象 和之前對象的資料可能一致 但是 不是同一個對象 此對象記憶體計數是1
autorelease:自動釋放 當變數出了自動釋放池之後會自動釋放
自動釋放池在項目中有很多看不見的
屬性描述關鍵字:
retain/strong:
//如果是retain 會做兩件事
//-(void)setNames:(NSMutableArray *)names{
// //第一件事把原來的release -1
// [_names release];
//// 第二件事把新傳遞進來的retain +1
// _names = [names retain];
//
//
//}
1
2
3
4
5
6
7
8
9
10
屬性生命時retain加的1 會在當前對象銷毀時 執行dealloc方法的時候 執行release -1
assign/weak:
//如果是assign或weak set方法中只做了一件事
//-(void)setAge:(int)age{
//
// _age = age;
//
//}
1
2
3
4
5
6
7
copy:
//如果是copy set方法中做一件事
//-(void)setNames:(NSMutableArray *)names{
//
// _names = [names copy];
//}
1
2
3
4
5
6
readonly:如果用readonly修飾 會使屬性只產生get方法 沒有set方法
nonatomic:非原子性操作 不安全 效率高 非多線程都用nonatomic
atomic:原子性操作 安全執行緒 效率低 只有多線程訪問資料的時候才有可能會使用此關鍵字
所有的基礎資料型別 (Elementary Data Type)用assign或weak但是因為是預設的 所以什麼都不用寫
所有的物件類型(除了NSString)都用 strong或retain
NSString需要用copy來修飾,為了避免連鎖反應 改變了某一個字串 導致一系列相關字串發生改變。
藍懿教育記錄