【问题标题】:Why RemovingAllObjects, Assigning nil and then initializing NSMutableArray crashes iOS App?为什么 RemovingAllObjects,分配 nil 然后初始化 NSMutableArray 会导致 iOS App 崩溃?
【发布时间】:2017-05-12 10:52:53
【问题描述】:

我必须将响应 JSON 的国家、州和城市分配到 NSMutableArray 中,该数组在 Modal Class 中初始化。

我必须删除所有对象才能设置新的州和城市,这样做会因错误而崩溃

已释放对象的校验和不正确 - 对象可能已被修改 被释放后。 *** 在 malloc_error_break 中设置断点进行调试

然后在回答 https://stackoverflow.com/a/12050676/5568169 时知道将 nil 分配给 mutableArray 将起作用,并且它起作用了,但是现在用户可以再次选择另一个国家,所以现在分配内存 [myMutableArray alloc] init]],给了我同样的错误开始。

    -(void)fetchStates:(NSString*)idString {

        [registrationModalContactVC.allStateArray removeAllObjects];
        registrationModalContactVC.allStateArray = nil;
        [registrationModalContactVC.allStateDict removeAllObjects];
        registrationModalContactVC.allStateDict = nil;
        registrationModalContactVC.allStateArray = [NSMutableArray new];
        registrationModalContactVC.allStateDict = [NSMutableDictionary new];
}

请帮忙

【问题讨论】:

  • 单独使用removeAllarray = [[NSMutableArray alloc] init] 也会导致崩溃吗?
  • 你在哪里使用这个数组
  • 先生,我在选择器视图中使用这个数组,实际上有三个选择器视图,一个用于国家,然后用于州,然后用于城市。
  • 将崩溃的部分代码添加到问题中。
  • 我能理解你的问题如果数组已经包含,你想在传递你想要清除对象的数据之前将数组数据从你的帮助类发送到视图控制器。现在在我的回答中,我将数据从服务助手类存储到一个数组(newArray)中,该数组之前分配在 init 方法或 viewdidload 方法上。

标签: ios objective-c nsmutablearray removeall


【解决方案1】:

删除下面的代码是有效的,但它可能会再次出现同样的错误

registrationModalContactVC.allStateArray = nil;
registrationModalContactVC.allStateDict = nil;
registrationModalContactVC.allStateArray = [NSMutableArray new];
registrationModalContactVC.allStateDict = [NSMutableDictionary new];

【讨论】:

    【解决方案2】:

    我认为您的 mutablearray 是 pickview 的数据源,当您删除所有对象时,您的 pickview 的状态如何。

    【讨论】:

    • 不,我只是将数组作为参数传递给 pickerView 方法,它将显示数组中的项目。我认为问题可能在于解析来自 JSON 的数据,我正在重试它
    • 有时状态数组只是显示空白,我的意思是它是关于我初始化数组的地方
    • 你可以nslog(@"%@", registrationModalContactVC.allStateArray);
    【解决方案3】:

    你不应该这样做:

    [myMutableArray alloc] init]
    

    你的意思是:

    myMutableArray = [[NSMutableArray alloc] init];
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-04-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多