NSMutableArray无法添加静态NSString,抛出异常

时间:2014-06-20 00:53:54

标签: objective-c nsstring nsmutablearray

使用64容量创建了NSMutableArray。添加了一个NSString对象。但是,对象的字符串值为nil。

static NSString* cake = @"cake"; 
...
NSMutableArray* food = [NSMutableArray arrayWithCapacity:64];
[food addObject:[NSString stringWithString:cake]];
NSString* dessert = [[food objectAtIndex:0]stringValue];
// dessert is nil

如果[NSString stringWithString: cake]仅替换为cake,则会引发异常

这是一个完整的程序,它少于10行代码并且不起作用

#import <Foundation/Foundation.h>
static NSString* cake = @"cake";
int main(int argc, const char * argv[]){
    @autoreleasepool {
        NSMutableArray* food = [NSMutableArray arrayWithCapacity:64];
        [food addObject:cake];
        NSString* dessert = [[food objectAtIndex:0]stringValue];
    }
}

它引发了异常。

1 个答案:

答案 0 :(得分:1)

问题可能是您的阵列为零。这段代码有效。

NSMutableArray *foodArray = [NSMutableArray array];
[foodArray addObject:@"cake"];
NSString *dessert = foodArray[0]; //dessert is "cake" 

更新

您收到的无法识别的选择器异常是在NSString上调用stringValue的结果。正如@Chuck所说,NSString没有那种方法。