回答

5

正確的答案是:「你這樣做是錯誤™」 ;-)

你不應該需要引用從視圖視圖控制器,你當然不應該保留視圖控制器在你的觀點之一 - 或者你最終會有一個保留循環和泄漏記憶。

可可提供多個模式來解決這個問題:

  • 使用委託:定義一個稱爲DemoViewDelegate協議和一個委託屬性添加到DemoView。然後讓你的視圖控制器實現這個協議。 重要提示:不應保留代表!您創建的任何代理財產應設置爲assign請參閱Apple's Delegation docs或只是谷歌「委派模式」。

  • 使用響應鏈:呼叫的UIApplication的sendAction:to:from:forEvent:離開to:設置爲nil有你的行動消息自動發送了響應鏈到您的視圖控制器。見Apple's Responder docs和更詳細的Action Messages docs

  • 使用通知:在此特定場景中較少見,但您也可以讓視圖控制器偵聽視圖發送的通知。

+1

即使設計是固定的,從視圖到視圖控制器的映射也是很有趣的。我們都知道它在那裏,隱藏在一些私人API中,等待被濫用... – 2011-05-11 21:37:25