2013-03-11 79 views
0

我製作了一個彈出視圖,其上有一個關閉視圖的UIButton。每當我把上的按鈕,程序退出此消息:[MTPopupWindow performSelector:withObject:withObject:]: message sent to deallocated instance 0x84675f0 這裏是header filesource file使用我使用這行代碼的類:錯誤:發送到釋放實例的消息

[MTPopupWindow showWindowWithContent:@"Some text here" insideView:self.view]; 

我認爲有什麼問題重新分配我的對象過早,但因爲我使用ARC我不知道什麼是造成這個問題。我認爲問題出現在這行代碼中:

[self.closeBtn addTarget:self action:@selector(closePopupWindow) forControlEvents:UIControlEventTouchUpInside]; 

但是我看不出有什麼問題。

回答

1

你應該知道有一個問題,當你寫這樣的:

// Cast to void because we don't use the result (otherwise compiler warning) 

既然你不使用的結果,ARC認爲,它是免費的這條線後,插入您的對象上的釋放,這意味着對象正在儘早被釋放。

有很多方法可以解決這個問題;看看諸如NS_RETURNS_RETAINED之類的東西,或者讓彈出窗口的調用者持有強烈的引用。

+0

好的,你能給我一個小小的代碼示例嗎? – Shinonuma 2013-03-11 14:26:09

+0

我從NS_RETURNS_RETAINED找不到任何有用的東西,你能給我一個例子說明如何解決這個問題嗎? – Shinonuma 2013-03-11 14:52:35

相關問題