記憶體管理 問題集錦二

2021-07-08 11:44:57 字數 852 閱讀 8904

3、arc 下 dealloc 方法存在的意義在於什麼地方?舉例說明一下具體的使用場景。

唯一乙個留著 dealloc 方法的原因就是, 你需要釋放一些不在 arc 控制下的資源。 例如 core foundation 物件中呼叫 cfrelease(), 對那些通過 malloc() 分配的記憶體呼叫 free(), 登出通知,停止 timer, 等等。

如果你是乙個物件的**的話,有時必須顯式的斷開和它的連線,但通常這都是自動的。 大部分情況下,**都是弱引用(避免迴圈引用), 當乙個即將被釋放的物件是其他物件的**的話, 當這個物件被銷毀時,**指標將會被自動設定為 nil。 弱指標在這之後會被自動清楚。

另外, 在你的 dealloc 方法中, 你仍然可以使用例項變數, 因為他們在這時候還沒被釋放掉。 在 dealloc 返回之前,都不會被釋放。

4、分別寫出在assign、retain、copy下屬性對應的setter方法的內部實現。

-(void)setname:(nsstring *)name

}

----- retain

-(void)setname:(nsstring *)name

}

----- copy

-(void)setname:(nsstring *)name

}-(nsstring *)name

5、在category中本身不允許為已有的類新增新的屬性或者成員變數,你有沒有其他的方法可以在category中新增屬性或者是成員變數?

6、protected 和 public 都能夠從外界改變屬性,那麼最大的區別是什麼?

記憶體管理 問題集錦一

1 以下 有什麼問題嗎?如果沒有的話,obj obj2的引用計數分別是多少?如果有問題的話存在什麼問題?class obj class alloc init 引用計數 為 1 class obj2 obj 這裡只是賦值 obj hello obj release 引用計數 減為 0 obj2 hel...

作業系統記憶體管理問題集錦

1.可採用哪幾種方式將程式裝入記憶體?它們分別適用於何種場合?a.首先由編譯程式將使用者源 編譯成若干目標模組,再由鏈結程式將編譯後形成的目標模組和所需的 庫函式鏈結在一起,組成乙個裝入模組,再由裝入程式將裝入模組裝入記憶體 b.裝入模組的方式有 絕對裝入方式,可重定位方式和動態執行時裝入方式 c....

記憶體管理二

發現兩篇記憶體池的博文,博文位址如下,寫的很好,能避免記憶體碎片和記憶體洩露問題,比我這個玩具 要好很多,大家可以看看 在我們做專案的時候,經常會分配了記憶體,然後卻忘了釋放,造成記憶體洩漏的問題。以下 可以實現在 退出的時候自動釋放之前申請但未釋放的記憶體。其原理是 用乙個雙向鍊錶維護申請的記憶體...