【问题标题】:NSMutableArray becomes immutable when reinstantiated?NSMutableArray 重新实例化后变得不可变?
【发布时间】:2015-09-26 15:21:02
【问题描述】:

我在我的视图控制器上创建了一个 NSMutableArray 属性,它为用户保存了一些核心数据对象。

当用户按下按钮时,我用while循环清除可变数组的内容,

while (self.mArray.count != 0){ 
   [context deleteObject:self.mArray[0]];
   [self.mArray removeObjectAtIndex:0];
}

在while循环之后,我重新初始化数组:

self.mArray = [[NSMutableArray alloc] init];

我知道这是没有必要的,因为数组中应该有零个对象,但无论如何,当我重新初始化数组,然后在调试器中检查数组的类时,我得到了 __NSArrayI,这得到了证实之后我尝试将对象添加到 self.mArray 时引发异常。

我一直在寻找对我的数组的任何其他引用,但我总是将 [self.mArray mutableCopy] 作为参数传递给其他方法,并且我从未将其转换为 NSArray。我只是不明白如何调用 [[NSMutableArray alloc] init] 将数组初始化为不可变数组。

我错过了什么?

【问题讨论】:

  • 你能给我们看看属性 mArray 的声明吗?
  • 假设您的mArray 属性是用copy 定义的,这是stackoverflow.com/questions/14856681/… 的副本
  • 我的属性声明如下所示:@property (strong, nonatomic) NSMutableArray *mArray;

标签: ios objective-c arrays nsmutablearray nsarray


【解决方案1】:

您可能已在属性声明中将 mArray 声明为副本。将其更改为强。

【讨论】:

  • 我已经宣布它是强大的。我将属性声明放在​​我原来帖子的 cmets 中。
猜你喜欢
  • 2020-07-04
  • 1970-01-01
  • 1970-01-01
  • 2014-10-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-11-14
相关资源
最近更新 更多