2013-07-01 66 views
0

我創建了一個UIBiew子類,裏面有一個UIButton,裏面有目標。 選擇器在UIView子類內部實現,並由Interface Builder鏈接。UIView子類的Dealloc阻止運行類方法

但是,當我在父視圖控制器運行addSubview輕敲按鈕將導致

performSelector:withObject:withObject:]:消息發送到釋放 實例

(I使用ARC) 我在dealloc方法中添加了一些控制檯輸出,並且在viewDidLoad以UIView子類的addSubview結束後,我們看到該子類被釋放。

如何防止這種情況? 我試過@property(nonatomic,retain),將實例添加到一些全局數組中... 但是沒有運氣。

據我所知,由於沒有強烈的引用,ARC沒有發現該對象,但我無法強制阻止該情況。

任何幫助,將不勝感激。

回答

0

在您的View Controller類中創建子視圖類的強引用可以幫助您解決問題。

@property (strong , nonatomic) UIView *subclassName; 
+0

其實我試過那個,但問題仍然存在:/ – Heps

+0

你是如何創建UIButton的引用的? 另外,你是否在某處創建了ViewController對象的引用?如果是,比你如何創建它? –

+0

起初,我剛在視圖中創建了一個按鈕,然後創建了一個IBAction touchUpInside(帶有幾個鼠標拖動) 現在我還創建了一個帶@property(非原子,強大)的插座,但它並沒有改變情況。 – Heps

0

你的存儲按鈕的引用(UIButton的),您要添加爲子視圖?

+0

按鈕添加與界面生成器與觸摸了內部聯繫的行動,所以我猜參考被存儲,應該工作。但事實並非如此,所以我錯過了這裏的東西 – Heps

+0

可能你不需要繼承UIButton,爲什麼不使用類別 –

+0

但我沒有繼承UIButton。我正在繼承一個UIView。但是在它內部的所有對象都無法運行,因爲UIView子類實例在addSubview之後被釋放。我之前用工作方法創建了自定義的UIViews,但現在我無法重複這一點,而且我也找不到使之在以前的項目中工作的線索 – Heps

0

問題在於將NIB鏈接到Class。

我將文件所有者鏈接到類而不是鏈接UIView對象。

通常在使用UIViewController處理筆尖時,需要將File Owner鏈接到UIViewController類。 但是,當在UIView子類上工作時,必須鏈接UIView對象。