記憶體管理的一點事

2021-07-05 11:00:03 字數 695 閱讀 4217

引用計數:

物件的每次建立,引用計數為1

方法:1》retain方法,每次呼叫引用計數加1,並且返回值是物件本身

2》release方法,物件引用計數減1,沒有返回值

3》retaincount方法,返回物件的引用計數

4》dealloc方法,當乙個物件被**的時候,會呼叫此方法,像是物件說臨終遺言的地方。

重寫此方法的時候,一定要呼叫[super dealloc],並且這句**的位置一定要在方法的最後

幾個小概念:

1》殭屍物件:所占用記憶體已經被**的物件,殭屍物件不可再使用

2》野指標:指向殭屍物件(不可用記憶體)的指標,給野指標傳送資訊會報錯(exc_bad_access)

3》空指標:沒有指向任何東西的指標(儲存的是nil、null、0),給空指標傳送資訊不會報錯

記憶體管理中的set方法

- (void)setdog:(dog *)dog

}

誰建立,誰release;誰retain,誰release。

上面的set方法可以使用一句話來代替

變數宣告時可以使用@property來進行宣告建立

@property (retain) dog *dog;

指定了(retain)就會為我們生成上面手寫的set方法。

C C 記憶體管理一點問題

1.常見的記憶體錯誤及其對策 記憶體未分配成功卻使用了它 在使用記憶體之前檢查指標是否為null。如果指標p是函式的引數,那麼在函式的入口處用assert p null 進行檢查 如果使用malloc或者new來申請記憶體,應該用if p null 或if p null 進防錯處理。無論用何種方式建...

一點鬱悶的事

不知不覺已經從踏出校園步入工作崗位快一年的時間了,回想著這幾個月來的工作經驗不禁讓人寒心,我掰著手指想也想不出來自從自己做在這個工作崗位後做了什麼工作,幾乎每天除了自己學自己看之外沒做過幾個關於工作方面的事情,不經意將讓我看到一篇文章說 如果你剛踏入工作崗位而你的主管並沒有讓你參加專案這真是乙個悲劇...

mybatis的一點事

select insert update delete if where foreach sql等等。其中,除了查詢語句,其他的增刪改語句都可以用update標籤來用 佔位符 底層就是jdbc中的preparedstatement 的 問號佔位符,適合給表字段的值進行佔位 佔位符 適合對sql片段進...