我有,我要確保我做一些特別的東西,當我遇到一個「空」的字符串的方法。它的工作原理偉大的,當它實際上有一個字符串,或者當我特地將它設置爲「無」或「NULL」,但是當我嘗試測試未初始化的NSString它崩潰。我如何處理這種情況?檢查「空」的NSString崩潰時的NSString未初始化
例如:
-(void) WhyDoICrash
{
NSString *foo;
// Some other stuff...
// foo should be considered "empty"
if (foo == nil || foo == NULL || [foo length] == 0)
{
// whatever
}
}
============= EDIT ===================
好的,上述僅僅是一個非常簡單的示例顯示的問題。實際上,我使用的NSString,類別,這意味着一些我越來越無法使用的(好,但不適用)的建議。以下是我的確切代碼:
#pragma mark - NSString Category
@interface NSString (NullOrEmptyTesting)
+(BOOL) isNullOrEmpty: (NSString*)input;
@end
@implementation NSString (NullOrEmptyTesting)
+(BOOL) isNullOrEmpty: (NSString*)input
{
return (input == (id)[NSNull null] || input.length == 0);
}
@end
我同意你的意見。我的真實場景實際上是一種將字符串作爲參數的方法。我只是想給出一個非常簡單的代碼示例來說明問題。 :-) – ghostatron
@con那麼方法的參數是什麼?如果它來自一個未初始化的自動變量,那麼它是相同的推理:你不能對它的值做任何假設。 – 2011-10-15 01:21:20
我剛剛編輯原始帖子以提供確切的代碼。我將一個類別添加到NSString中,如果我使用未初始化變量的方法,它會崩潰。 -.- – ghostatron