2011-07-20 52 views
1

我的問題很簡單: 在iPhone/iPad的模擬器,當你推一個零視圖控制器,你是親切的消息推一個零視圖控制器上部署的應用程序

Application tried to push a nil view controller on target

招呼後應用程序繼續執行,就好像什麼也沒發生一樣這是剛好我想要的應用程序的行爲類型(我有一個工廠方法,如果遇到不正確的創建實例的請求,返回nil)。

但是我懷疑這是否會像真正的iOS設備一樣飛行。由於我不能在這個早期的發展階段進行部署,我想知道這個行動是否會導致崩潰,或者它會慷慨地無所作爲(如預期的那樣)。此外,如果它在iOS上運行,我會在審覈過程中被蘋果公司抨擊做壞事嗎?

回答

2

說到Cocoa Touch方法,除非參考文檔明確聲明nil參數是有效的,否則不應該傳遞nil參數。如果文件不明確,不要依賴經驗性測試(在模擬器或其他方式)來決定它是否安全。蘋果可能會發布未來的操作系統更新,這會突然導致您的應用程序開始爲現有用戶崩潰。然後,他們會在Apple審覈您的修補程序時爲您的應用程序提供一週或兩週的不良評論。這僅僅是不值得的風險。

pushViewController:animated:的文檔沒有指定如果給定一個nil參數,它的行爲如何,因此請在代碼中安全地使用並測試nil。

+0

謝謝,這正是我的問題的本質。 –

+0

@cduhn,嗯!很好的解釋! – EmptyStack

1

這意味着您正試圖推送尚未分配的視圖控制器。在將其推入導航控制器之前,確保視圖控制器不是

如果推到導航控制器棧,應用程序只是拋出消息「應用程序嘗試對目標...推零視圖控制器」,在控制檯中,也不會擾亂應用程序的執行。但通過檢查以保證安全,總是好事,以防止出現意外行爲。

+1

事實上,我只是推零。事情就是我可以,如果應用程序忽略了這個事件,我會很高興。問題是這是否會起作用,或者我要檢查我的工廠方法。 –

+0

不是。該應用程序不會干擾執行。但通過檢查* nil *來保證安全,總是很好,以防止出現意外的行爲。 – EmptyStack

相關問題