2011-10-17 33 views
1

我有一個nib文件,裏面有一堆視圖和自定義對象。其中一個對象是自定義控制器對象。在它的awakeFromNib方法中,我想訪問持有所有這些東西的窗口。我不確定如何在這一點上看到窗口。但是,這個自定義對象有一個視圖的出口。我知道你可以通過調用[nameOfView窗口]來獲得窗口,但由於某種原因,此時窗口返回nil,即使視圖不爲零。窗口在什麼時候不是零?作爲一個方面說明,如果我將窗口作爲參數傳遞給從nib文件加載的自定義對象,我是否必須擔心釋放/保留它?內存管理如何在我的對象中使用NSWindow工作,並從筆尖加載?NSWindow在清醒後從零開始

+0

你的筆尖文件是否包含一個窗口? – 2011-10-17 21:20:38

+0

窗口以編程方式創建。 – JPC

回答

2

如果我理解正確的話,你將無法在筆尖加載過程中要做到這一點:

  1. 有些控制器(我們稱之爲主控制器)觸發筆尖文件的負荷;
  2. awakeFromNib被髮送到該nib文件內的對象,包括您的自定義控制器對象;
  3. 主控制器獲取對nameOfView的引用(可能通過自定義控制器),並將其添加到窗口的視圖層次結構中。

裝載包含的意見並不這些觀點自動添加到窗口的視圖層次,這是一個筆尖文件爲什麼[nameOfView window]回報nil您的自定義控制器的awakeFromNib實現。由於在步驟1中有一個主控制器負責觸發該nib文件的負載,我假定這個主控制器是負責將視圖添加到窗口的負責人。讓主控制器在發生這種情況時向自定義控制器發送消息,以便自定義控制器知道nameOfView何時添加到窗口。

+0

我會盡力,謝謝 – JPC