2013-01-14 124 views
1

我敢肯定這是eactly同樣的問題在componentsJoinedByString gives me EXC_BAD_ACCESScomponentsJoinedByString導致崩潰與EXC_BAD_ACCESS

基本上,一個數組使用此代碼填充,與ARC打開:

-(NSMutableArray *)getArrayOfCommaSeparatedSelectorStrings{ 
    NSMutableArray *Array = [[NSMutableArray alloc] init]; 
    for(NSMutableArray *e in [self getArrayOfSelectorArrays]) { 
     [Array addObject:[displayCSSInformation returnArrayAsCommaList:e]]; 
    } 
     return Array; 
} 

,然後displayCSSInformation嘗試用此方法返回逗號分隔列表:

+(NSString *)returnArrayAsCommaList:(NSMutableArray *)ToBeConverted{ 
    NSString *test = [ToBeConverted componentsJoinedByString:@", "]; 
    return test; 
} 

感謝您的幫助。

+1

您是否設置了異常斷點來查看崩潰發生的位置? – Fogmeister

+0

您使用ARC嗎? – Tim

+0

對於這兩者都是。異常發生在componentsJoinedByString發生的地方。 – neutrino

回答

0

如果所有方法都調用另一個方法,通常不需要使用單獨的方法。刪除您的+returnArrayAsCommaList:方法,並直接在陣列上使用componentsJoinedByString:

- (NSMutableArray *) getArrayOfCommaSeparatedSelectorStrings 
{ 
    NSMutableArray *array = [[NSMutableArray alloc] init]; 
    for (NSMutableArray *e in [self getArrayOfSelectorArrays]) 
     [array addObject:[e componentsJoinedByString:@", "]]; 

    return array; 
} 

上述應工作(它在我的小測試的例子),如果你仍然得到錯誤:

  1. 確保getArrayOfSelectorArrays真的返回字符串數組的數組。將輸出記錄到控制檯或使用調試器逐步完成。

  2. 使用「 Build &分析」選項可讓靜態分析器檢查是否存在任何問題。這對ARC而言不是什麼問題,但它仍然會採用諸如使用未初始化值的方式。

  3. 確保您已正確橋接來自任何Core Foundation對象的所有權。