2011-09-22 63 views
0

我在這裏腦筋急轉彎。所以我有一個方法,通過NSMutableArray,這是另一個類的屬性。對象是NSString。在調試器中,我看到它說我試圖添加到數組的對象的NSCFString。所以我基本上做到這一點:無法識別的選擇器發送到實例(SIG_ABRT),將NSString添加到NSArray

- (NSArray *)GetFileNames { 
    NSMutableArray *fileNameArray = [[[NSArray alloc] init] autorelease]; 
    for (NSString *str in self.ParentVC.SelectedOptions) { 
     [fileNameArray addObject:str]; 
     NSLog(@"%@", str); // this works fine 
    } 
    return fileNameArray; 
} 

而且我在其他地方調用該函數是:

NSArray *fileNameArray = [[NSArray alloc] initWithArray:[self GetFileNames]]; 

但由於某些原因,我得到了無法識別的選擇發送到實例,並停止在這條線。難道我做錯了什麼?任何提示嘗試解決問題?我已經檢查了self.ParentVC.SelectedOptions並顯示了我想要的NSCFString或NSCFStrings。我可以在樂器中做這件事嗎?謝謝。

+1

也許它應該是「NSMutableArray alloc」? –

+0

@Alan Moore謝謝!總腦力激盪! – Crystal

+0

不客氣!猜猜我應該把它作爲答案:P –

回答

1

更換第二行以

NSMutableArray *fileNameArray = [[[NSMutableArray alloc] init] autorelease]; 

真實對象的類型是你分配什麼,而不是你聲明一下。在發佈的代碼中,數組不可變。

1

這條線:

NSMutableArray *fileNameArray = [[[NSArray alloc] init] autorelease]; 

應該

NSMutableArray *fileNameArray = [[[NSMutableArray alloc] init] autorelease]; 

否則你創建一個不變的陣列。

相關問題