2014-04-30 43 views

回答

1

文檔。

使用斷言在開發過程中引發異常。

也回來NSError(雖然它應該希望永遠不會發生到你的生產時間)。

0

你可以使用NSAssert(),這隻會火在建立地方NS_BLOCK_ASSERTIONS沒有定義:

- (void)someMethodWithParam:(id)someParam { 
    NSAssert(someParam, @"someParam cannot be nil"); 
    ... 
} 

這將非常限制檢查你,開發夥伴們,但如果你想讓它持續下去,無論身材,那麼NSException是最好的:

- (void)someMethodWithParam:(id)someParam { 
    if (!someParam) { 
     [NSException raise:@"MyException" format:@"someParam cannot be nil"]; 
    } 
    ... 
} 
+0

NSParameterAssert會更適合這裏 – jrturton

+0

@jrturton同意。 – Droppy

0

要檢查在編譯時使用

__attribute__ with nonnull 

實施例,第一和第二參數不能爲空:

extern void * my_memcpy (void *dest, const void *src, size_t len) 
__attribute__((nonnull (1, 2))); 

非null屬性指定一些功能參數應 是非空指針。使用非空編碼對 值的期望編碼爲顯式契約,這可以幫助捕獲潛伏在任何調用代碼中的任何空指針錯誤 。請記住:編譯時錯誤»運行時間 錯誤。

更多here

相關問題