2012-02-26 53 views
2

對不起,如果已經有人問我這個問題,但是我已經搜索了,但是我沒有找到答案, 。我的分類UITableViewController。我沒有一個自定義的筆尖。我也有一個自定義tableviewcell,我正在實施確實有它自己的自定義筆尖。當我爲這個單元格創建出口時,我應該創建一個弱引用?因爲它最終作爲TableViewController的子視圖,我會認爲是的,但Apple文檔也指出,筆尖中的頂層對象應該很強壯,所以我很困惑。任何幫助將是appreicated!iOS:ARC用於筆尖的IBOutlets(用於定製UITableviewCell)的強或弱引用

+1

的可能重複[IBOutlets應該在ARC下強還是弱?](http://stackoverflow.com/questions/7678469/should-iboutlets-be-strong-or-weak-under-arc) – Steve 2012-02-27 00:07:10

+0

絕對是上述帖子的重複。 – Steve 2012-02-27 00:07:26

+0

因爲它是一個tableview單元格的自定義筆尖,而不是UIViewController,我認爲這個問題有一些優點,不應該關閉。 – 2012-02-27 00:24:58

回答

1

使用弱引用。這是因爲當你的視圖被卸載時,如果它很弱,鏈接將被自動設置爲零。

0

如果你把tableview中的單元格放在xib之外(我敢肯定你會這樣做),那麼它需要一個強大的引用,否則單元格會在你可以使用它之前被釋放構建表格。

可能如果您在viewDidLoad中使用它,它仍然存在,但最好不要依賴以這種方式行事的呼叫週期。

+0

「如果你把這個單元格放在xib之外的tableview中(我敢肯定你會)」。我假定你的意思是編程。我在調用tableView:cellForRowAtIndexPath時加載UITableViewCell nib:在那裏我根據需要配置單元格。 – jkratz 2012-02-27 02:35:09

+0

這就是我的意思。如果你的引用很弱,那麼在代碼到達那個方法之前,單元會被自動釋放(或者我認爲它應該是)。 – 2012-02-27 03:34:43

0

「蘋果文檔還指出,在筆尖頂級的對象應該是很強的,所以我很困惑」

這是真實的,不管你用什麼UIView子類。如果你有一個帶有UITableViewCell和UIView IBOutlet的筆尖,都是頂級對象,那麼UIView需要很強大。如果UIView IBOutlet是你的UITableViewCell的一個子視圖,它應該很弱。

0

您必須使用弱ownership.Because你的表視圖細胞有很強的參考它的父視圖和你的父視圖,具有很強的參考它的子視圖

像這樣:

@property (weak, nonatomic) IBOutlet MyView *viewContainerSubview; 
@property (strong, nonatomic) IBOutlet UIView *topLevelView;