2012-06-01 56 views
2

我設置NSAssert爲什麼在主,而不是在調用斷言

NSAssert(isStillLoadingArgument== [[self class] stillLoading],@"Hmm.... we think isStill Loading is false or true and yet stillLoading is true");; 

這裏是哪裏我問這個問題的截圖中的代碼確實NSAssert突破,代碼突破這裏:

enter image description here

因爲我は這是很煩人nt來代替我設置斷言的代碼來查看斷言中斷。那麼,我該怎麼做。

奔答案遺憾的是不解決問題: enter image description here

+0

本的答案確實解決了這個問題。在第二張圖片中,調試器已停止在斷言處,這與您的斷言不同。 – JeremyP

+0

哪張圖片?沒有調試器停在main。如果你看看我的最後一張截圖,我就會在這個問題上做些調整。調試器(綠色箭頭)是主要的。 –

+0

底部圖片。 http://i.stack.imgur.com/fyIZI.jpg代碼窗口和控制檯輸出都表明它停止的斷言與斷言不同。 – JeremyP

回答

8

您需要爲您的項目添加一個斷點來處理所有異常。

1)點擊斷點導航

Breakpoint

2)添加一個異常斷點

Exception

3)確保您將其設置爲對所有異常打破

All

現在XCode將打破實際的斷言,而不是主要的。希望這可以幫助!

+0

好的答案,很好的圖片:) –

+0

我試過它仍然在主要上。那麼,爲什麼我們會拋出拋出?此外,評估後會自動繼續哪些選項? –

+0

您可以添加要在命中斷點時執行的操作。方便,當你只是想要斷點記錄一些東西,然後繼續而不實際停止。至於投擲,你想在拋出異常時立即中斷。奇怪的是,這並不適合你,也許你的斷言是在你無法真正看到類似蘋果類的斷言的情況下發射。 –

2

配置調試器打破例外。

當斷言失敗時,會引發異常。如果什麼都沒有捕捉到異常,它會在解開堆棧後終止程序,並將其保留在main()處。

+0

包括捕獲的異常?我不希望程序突破捕捉的異常。 –

+0

無論如何,我從不嘗試使用try catch只是想確認一下。 –

+0

是的,異常斷點將停止在將被捕獲的異常。當然,斷點僅在調試時纔有效。我們不是在談論改變你的程序的行爲。你可以點擊繼續按鈕讓程序繼續。另外,在Cocoa中,異常只應用於在開發過程中應該修復的程序錯誤,所以即使它們被捕獲,也應該停止異常。 –

相關問題