初始化NSMutableArray但初始化对象的类显示为NSArray

时间:2014-07-15 10:03:47

标签: ios objective-c nsmutablearray nsarray

我初始化了一个像NSMutableArray *mutableArray = [[NSMutableArray alloc]init];这样的可变数组。
我已经在NSLogs中打印了像NSLog(@"object class is %@",[mutableArray class]);这样的对象类。
我初始化了一个可变数组,但对象的类显示为__NSArrayM 我尝试将项添加到mutableArray然后应用程序崩溃。我不知道问题出在哪里。请告诉我为什么它被认为是NSArray而不是NSMutableArray。

感谢Advace

4 个答案:

答案 0 :(得分:1)

正如预期的那样,M中的__NSArrayM意味着可变。

NSArray / NSMutableArray是一个类群集,您永远不应期望将该类直接打印为NSArrayNSMutableArray

答案 1 :(得分:0)

对于Immutable数组,它返回

__NSArrayI    // Here I is for Immutable

对于mutable,它返回

__NSArrayM   // Here M is for Mutable

答案 2 :(得分:0)

可能是您正在为此可变数组分配一个非可变数组,或者您正在插入nil对象。你能否发布例外细节。

答案 3 :(得分:0)

    [mutableArray insertObject:object atIndex:0]; (for first)
    [mutableArray insertObject:object atIndex:[mutableArray count]]; (for last)
or  [mutableArray addObject:object];

你是如何添加它们的?