OC學習3 self 自動釋放 變數作用域

2021-06-22 10:29:38 字數 680 閱讀 3185

在程式設計中經常會用到self,可self具體指的是誰呢?記住兩句話就行了。

// 誰呼叫方法,self就指向誰

- (void)test

+ (void)test2

對於例項方法(動態方法),誰呼叫該方法,self就指向誰。②對於類方法(靜態方法),self代表類名。因此程式中的a,b兩句是等效的。

變數作用域:

變數的作用域是通過訪問控制符實現的,objective-c提供了4個訪問控制符:@private、@package、@protected、@public。

①@private(當前類訪問許可權):如果使用此控制符,則這個成員只能在當前類的內部被訪問。在類的實現部分(.m檔案中)定義的成員變數相當於預設使用此種訪問許可權。(在類的實現即.m檔案中也可以宣告成員變數,但是因為在其他檔案中通常都只是包含標頭檔案而不會包含實現檔案,所以在這裡宣告的成員變數是@private的,在.m中定義的成員變數不能和它的標頭檔案.h中的成員變數同名,在這期間使用@public等關鍵字也不行)

②@package(與映像訪問相同)用於部分隱藏成員變數(求解釋啊)。

③@protected(子類訪問許可權)可以在當前類,當前類的子類的任意地方訪問。用於部分暴露成員變數,類的.h部分定義的成員變數預設使用這種訪問方式。

④@public(公共訪問許可權)任意訪問。

OC自動記憶體釋放總結

autorelease方法不會改變物件的引用計數器,只是將這個物件放到自動釋放池中 自動釋放池實質是當自動釋放池銷毀後呼叫物件的release方法,不一定就能銷毀物件 例如如果乙個物件的引用計數器 1則此時就無法銷毀 由於自動釋放池最後統一銷毀物件,因此如果乙個操作比較占用記憶體 物件比較多或者物件...

OC 記憶體洩露 自動釋放池

花絮 看到下面的 就想起這麼乙個調侃 乙個老程式設計師,功成名就,金盆洗手不在寫 後,決定練練書法。提筆思索良久後在紙上寫下 hello world 1 首先說下自動釋放池的底層實現 它是通過以 autoreleasepoolpage 為結點的雙向鍊錶來實現的。很類似棧的方式 對應push操作 底層...

OC學習記錄3 類

自定義類 建立abc.h以及abc.m檔案,在.h檔案中,在.h檔案中定義例項變數。float heightinmeters void setheightinmeters float h int weightinkilos void setweightinkilos int w float body...