IOS基礎之 十一 記憶體管理 ARC

2021-09-27 09:08:03 字數 2076 閱讀 9565

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...