iOS9 - [__ NSArrayM removeAllObjects]崩溃

时间:2018-03-20 02:03:58

标签: ios objective-c iphone ios9

Fabric发现NSMutableArray在调用removeAllObjects时发现崩溃。 大多数崩溃都发生在iOS9中。这是我的代码,崩溃在[self.recommentGoodsArray removeAllObjects]

- (void)clickColorWithIndex:(NSUInteger)index {
    [self.recommentGoodsArray removeAllObjects];
    [self.tableView reloadData];

    GoodsInfo *gInfo = [self.goodsInfo.relatedGoodsArray objectAt:index];
    self.goods_id = gInfo.goods_id;

    [self loadGoodsDetail];
}

Fabric Fabric Session

Crashed: com.apple.main-thread
0  libobjc.A.dylib                0x22d2a94e realizeClass(objc_class*) + 25
1  libobjc.A.dylib                0x22d2aa15 realizeClass(objc_class*) + 224
2  libobjc.A.dylib                0x22d2aa15 realizeClass(objc_class*) + 224
3  libobjc.A.dylib                0x22d2d91b lookUpImpOrForward + 158
4  libobjc.A.dylib                0x22d2d873 _class_lookupMethodAndLoadCache3 + 34
5  libobjc.A.dylib                0x22d33cfb _objc_msgSend_uncached + 26
6  CoreFoundation                 0x2357e523 -[__NSArrayM removeAllObjects] + 266
7  ZZKKO                          0x19f781 -[GoodsDetailVC clickColorWithIndex:] (GoodsDetailVC.m:825)

enter image description here

2 个答案:

答案 0 :(得分:0)

JList发生了崩溃。您可能正在处理解除分配的对象。它可以是_objc_msgSend_uncachedrecommentGoodsArray

您需要检查以下内容:

  1. 是propmentGoodsArray宣布为self还是strong?它一定要是 weak
  2. 是否有可能在VC被销毁后调用此方法(例如:来自计时器或来自UIAlertView的回调)。如果是这样,你必须保留自己,直到你的功能完成与自我一起工作。

答案 1 :(得分:-2)

如果self.recommentGoodsArray在删除之前有对象,您可以尝试。

if ([self.recommentGoodsArray count]){
   [self.recommentGoodsArray removeAllObjects];
}