1. set 方法記憶體管理的相關引數
retain: release舊值,retain新值(值適用於oc物件)
assign:直接賦值(set方法預設,適用於非oc物件型別,即基本資料型別,也包括列舉和結構體)
copy : release 舊值, copy 新值(nsstring)
2. 是否生成set方法
readwrite: 讀寫(同時宣告和實現 setter, getter,預設)
readonly:唯讀(只會生宣告和實現getter方法)
3.多執行緒管理
nonatomic:效能高
atomic:效能低(預設使用這個)
4. setter和getter方法的名稱
setter:給set方法改個名字,一定要有冒號( : )
getter: 給get 方法改個名字(bool型別用的較多)。
@property [getter=isrich] bool rich;
模型就是用來裝資料,就是乙個存放資料的類,就叫做模型類。
發微博的人: 名字,微博賬號,密碼,頭像,性別, 生日
迴圈引用:你引用我,我引用你
1. @class的作用:僅僅告訴編譯器有這麼乙個類,並不知道裡面有什麼。
@class person 告訴編譯器有person這個類,
2.開發中引用乙個類的規範。
在.**件中用@class宣告。
在.m檔案中用#import來包含類中所有的東西。
3.為什麼要用@class?
@class和效能有關,可以迴圈引用,還可以提高編譯效率。
@import作用是拷貝。
4.兩端迴圈應用的解決方案
一端用assign ,另一端用 retain。
四 autorelease基本使用法
1.首先把乙個物件發到池子中。
2.當自動釋放池被銷毀時,會對裡面的物件做一次release操作
3.返回物件本身。
4.呼叫完autorelease後,物件的計數器是不變,不會對它減一。
5.如果呼叫了兩次 autorelease後,會報錯,野指標錯誤。
autorelease的好處
不用再去關心物件的釋放時間
不在關心什麼時候去呼叫release.
autorelease使用注意:
占用記憶體較小的物件不在隨便的使用 autorelease.
錯誤寫法:
如果呼叫了兩次autorelease,會報錯,野指標。
@autoreleasepool
1. 計數器的操作
retain +1
release -1
retiancount 獲得計數器
2. set方法的記憶體管理
- (void)setcar: (car *) _car}
dealloc 方法的實現
- (void)dealloc()
3 @property引數
oc物件型別
非oc物件型別
arc : arc是編譯器特性。當編譯器發現 retian 或者 alloc,自動幫我們插入**(release)
arc的判斷準則:只要沒有強指標指向物件,物件就會被釋放。
強指標:預設情況下都是強指標。__strong 是雙下劃線。
__strong person *p2 = [[person alloc]init];
弱指標:__weak
__weak person *p = [[person alloc]init];nslog(@"%@" , p); //錯誤的寫法
兩端迴圈引用的時候:
arc:
一端用strong,另一端用weak。
非arc:
一端用retain,另一端用assign。
iOS記憶體管理 ARC
arc是在編譯的時候插入 來確信讓物件能夠按需要來存在。arc同樣是以引用計數為基礎。你可以選擇在以檔案或者專案為單位不使用arc。但是建議盡量最好使用arc,首先,編譯器為你做記憶體管理往往比你自己要更優秀,其次,arc導致的效率損失在ui面前基本可以忽略不計。arc有以下強制規則 1.你不能顯示...
OC記憶體管理之ARC
除了特殊場合,使用arc是大勢所趨。因為這不僅能夠提高程式設計師的開發效率,讓程式設計師把精力專注在功能實現上,也大大節約了專案的開發成本,更提高了程式的可維護性。1.使用arc的重要關注點就是 物件是否有強指標指向,沒有強指標指向的物件會被系統自動 2.property關鍵字 強指標用strong...
iOS基礎之記憶體管理 一 ARC下的記憶體洩漏
arc automatic reference counting,自動引用計數 是指在記憶體管理中採取自動計數的技術。在llvm編譯器中設定arc為有效狀態,就無需再次鍵入retain或者release 蘋果官方說明換言之,滿足下面的條件就無需手動輸入retain release了 使用xcode4...