OC中內存管理機制

一、內存管理:

1.內存回收:dealloc只是把內存使用權釋放,內容不清除,可能出現野指針的情況
2.memSet:將內存初始化,即把內存的內容清楚
3.ui進行交互的時候,系統會在交互過程中自動加一個自動釋放池,所以有時候滑動tableView時程序會崩潰,要用屬性賦值
4.在子線程中系統不會自動添加自動釋放池,如果子線程中用了很多類方法,我們需要自己手動添加自動釋放池
5.dealloc中不需要對assign修飾的屬性進行釋放
6.給一個可變的字符串用copy拷貝一份時,拷貝的字符串就是不可變的字符串了,并且是深拷貝;
7.給一個不可變的字符串用mutableCopy拷貝一份副本時,拷貝的字符串是可變的,并且是深拷貝;
8.要進行拷貝的類必須遵循NSCopying協議,并且重寫copyWithZone這個方法,是深拷貝還是淺拷貝與方法無關,只與方法的實現內容有關;

二、集合的內存管理 :深拷貝,淺拷貝,真正的深拷貝(歸檔)

1.當一個可變的集合,使用mutableCopy時都會產生一個新的對象,但集合的元素是一個淺拷貝;
2.真正的深拷貝:即集合中的元素和集合都發生深拷貝,則要使用歸檔;
3.代理中如果是單一持有時,代理對象用assignretain一樣;在UITableView的代理中設置assign,防止產生循環引用的情況;
4.autoreleasepoolrunloop的一種管理方式,先接收到release消息的對象后釋放,像棧的管理形式;
5.iPhone的每個應用的內存最高為120M

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容