addSubview對於引用計數操作

2021-09-01 16:52:44 字數 720 閱讀 8889

- (uitableviewcell *)tableview:(uitableview *)tableview cellforrowatindexpath:(nsindexpath *)indexpath

nsstring *path = [[nsbundle mainbundle] pathforresource:[m_downlistdatasource objectatindex:indexpath.row] oftype:@"png"];

uiimageview * vv = (uiimageview*)[cell viewwithtag:201];

vv.image = [uiimage imagewithcontentsoffile:path];

return cell;

}

[color=darkred]在我們呼叫這個函式(比如是[self.view addsubview:tableview])之後,tableview是否應該release?

這裡要分情況,如果tableview是乙個類的屬性,在類物件釋放的時候會自動釋放,那麼就不必再次釋放。反之,如果他只是乙個臨時的物件那麼就應該在加入之後進行釋放。這也是符合上面所說的規則的。

self.view是tableview的管理者,他就應該在加入tableview的時候對他進行retain,在本身釋放的時候release。而事實上,ios也正是這麼做的。[/color]

自動引用計數

每當你產生乙個物件,arc分配一大塊控制項去儲存這個物件。除此之外,當乙個物件是不在需要,arc 將會收回這個例項物件所佔的空間。如果乙個物件的空間被釋放掉,但是你任然通過物件的引用呼叫方法或者屬性,你的程式將要崩潰。為了不讓物件被釋放掉 arc將會追蹤有多少屬性 常量 變數正在引用這個物件。只要有...

引用計數 copy on write

拷貝通常分為值拷貝也叫淺拷貝和深拷貝,當拷貝方式為淺拷貝時就會有以下兩個問題 1 當需要調析構函式時,會出現同一塊空間被析構兩次的情況 2 如果是對指標的淺拷貝,會讓兩個指標同時管理同一塊空間,當乙個指針對這塊空間進行修改時,會影響到另外乙個指標。通過引用計數加寫時拷貝可以有效地解決這些問題。引用計...

自動引用計數

使用弱引用解決迴圈強引用 如果兩個變數屬性都可以設定為nil,那麼就用弱引用來設定其中乙個屬性來解決迴圈強引用。class person weak var apartment apartment?deinit class apartment deinit var aperson person?per...