2011-11-13 79 views
0
NSString *title = [myWebView 
        stringByEvaluatingJavaScriptFromString:@"document.title"]; 
NSMutableArray *array = [[NSMutableArray alloc] initWithCapacity:8]; 
int j = 0; 
int i=0; 
int count=0; 
int len; 
len = [title length]; 

for(i=0;i<len;i++){ 
    NSString *c = [title substringWithRange:NSMakeRange(i, 1)]; 

    if([c isEqualToString:@","]) 
    { 
     //array[count]= [title substringWithRange:NSMakeRange(j, 2)]; 
     NSString *xxx = [title substringWithRange:NSMakeRange(j,(i-j))]; 
     NSLog(xxx); 

     //insert the string into array 
     [array insertObject:xxx atIndex:count]; 
     j=i; 
     count = count + 1; 
    } 

} 

我的應用程序崩潰始終在該行目標C比較字符串

[c isEqualToString:@","] 

,並給出了錯誤 - 線程1:程序接收到的信號:「SIGBART」。

我知道確保在比較字符串時發生問題,因爲應用程序運行後我刪除了一行代碼。

有人可以幫忙嗎?謝謝

+2

是你申報嗎? – shannoga

+0

應用程序在isEqualToString行上崩潰的唯一方法是'c'變量以某種方式被釋放。您的示例代碼是否未經編輯?也許你可以嘗試爲你的應用程序啓用殭屍調試:http://cocoaforbreakfast.wordpress.com/2011/02/25/exc_bad_access-a-zombie-nightmare/ –

+2

另外,如果你的'NSRange'無效,你可以得到一個'NSRangeException'。你確定沒有? –

回答

1

考慮使用:

- (NSArray *)componentsSeparatedByString:(NSString *)separator 

例子:

NSString *title = [myWebView stringByEvaluatingJavaScriptFromString:@"document.title"]; 
NSMutableArray *array = [title componentsSeparatedByString:@","]; 
+0

它在您提到的行崩潰。它在崩潰之前打印此行 - [切換到進程2307線程0x207] 當前語言:auto;目前objective-c –

+0

我也試過運行NSZombie,並沒有發現任何東西: –

+1

也許'title'不是一個有效的字符串 – zaph

0

如果我結束比字符串更長或未定義,你有問題。如果你用1替換我,它不會崩潰,對吧?

順便說一句,你可以使用:

unichar c = [title characterAtIndex:i]; 
+0

它仍然在同一行 –

+3

墜毀,如果'c'是NULL(或者說'nil',因爲它是一個Obj-C對象),那麼表達式會立即計算爲0.在Objective C中,它允許發送消息給nil。 –

+0

NSLog(@「%@」,c);在碰撞線之前告訴我們輸出? –