0

我是 Obj-C 的新手。

我想知道如果我将 NSMutableArray 分配给 NSArray 会不会有任何问题,如下面的示例代码:

NSMutableArray *mutableArray = [NSMutableArray arrayWithObjects:@"item1", @"item2", nil];
NSArray *array = mutableArray;

我知道如果我使用[mutableArray copy]它会将数组复制为新集。我的问题是我的方法会与任何指导相冲突还是会有任何问题?

谢谢。

4

3 回答 3

4

两个指针都指向同一个对象。该对象的性质和行为将保持不变。它不知道也不受哪些指针引用它的影响。

如果数组发生了变异,那么无论您使用哪个指针来发送消息或检查数组,这些变异都是可观察的。

NSMutableArray如果存在但不存在的方法NSArray通过array指针发送,编译器会报错。但是,如果您忽略编译器的抱怨,这些方法仍然可以正常工作。指针的静态类型仅在编译时才有意义。它们不在编译的程序中表示(可能在调试信息中除外,但这不会影响运行时行为)。

于 2013-09-25T05:02:48.683 回答
1

问题是这样的:

如果 mutableArray 以某种方式发生了变化,并且数组仍然认为它是自身不可变的。
然后,事情可能会失控。

除此之外,我在这里没有看到太多问题......

于 2013-09-25T04:26:21.700 回答
0

您的数组将保持可变,但编译器会认为它是不可变的。因此,它不允许您在不进行类型转换的情况下使用特定于 NSMutableArray 的方法。

于 2013-09-25T04:30:43.190 回答