2012-10-05 70 views
5

我開始使用NIB文件處理視圖,並決定從我的項目中刪除它以編程方式構建它。在我的任何代碼中都沒有提到應該調用NIB文件,並且.XIB不存在於任何應用程序目錄中的任何位置。這是從調試控制檯向我拋出的確切錯誤。XCode試圖加載我從項目中刪除的NIB文件

*** Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason:  
'-[UIViewController _loadViewFromNibNamed:bundle:] loaded the "GESplitMainViewController" 
nib but the view outlet was not set.' 

我不明白爲什麼Xcode仍然試圖加載NIB。

+0

什麼是你的代碼在initWithNibName:bundle:? – Pfitz

+0

你可能會告訴它在代碼中加載xib文件,或者從故事板或類似的東西中加載。請向我們展示您的代碼或嘗試在項目中搜索NIB名稱。 –

+0

我沒有提到代碼中任何地方的NIB文件。 –

回答

11

首先,默認爲筆尖的initWithNibName:bundle搜索implementation捆綁如果您將nil作爲第一個參數傳遞,那麼它與視圖控制器的類共享相同的名稱,這就是您的應用程序試圖加載它的原因。

找到它的原因可能是因爲您曾經在項目中使用的.xib仍然包含在模擬器運行的軟件包中。即使從項目中刪除它們,Xcode也有在模擬器捆綁中保留已刪除資源的習慣。

如果您從模擬器中刪除應用程序,請清理Xcode項目並重新運行,它應該停止嘗試加載筆尖。

雖然這是您的應用程序從筆尖加載的原因,但這不是它崩潰的原因。崩潰是因爲您使用的舊.xib沒有連接到視圖控制器視圖插座的視圖。

+1

感謝有價值的信息:) –

+1

我也看到了這種行爲,並且模擬器中的構建清理工作正常,但構建在野外時該怎麼辦?簡單的更新似乎並不是從手機中刪除已經失效的xib,即使它不再存在於捆綁中。有沒有辦法清除它?還是我必須永遠活在永恆的存在?我當然不想告訴我的用戶他們必須卸載並重新安裝才能成功執行更新。 –

0

如果你還沒有使用筆尖名字在任何地方申請,先刪除應用程序,清理您的構建和測試,希望這能解決您的問題..