解决报错libc++abi.dylib: terminate_handler unexpectedly threw an exception

来源:互联网 发布:vmware mac os补丁 编辑:程序博客网 时间:2024/05/29 16:50

libc++abi.dylib是一个动态库,动态错误一般是由动态错误引起。for(NSMutableDictionary *downloadInfo in downloadingArray)                       {                           if ([[downloadInfo objectForKey:kMZDownloadKeyFileName] isEqual:s9id])                           {                                                              NSURLSessionDownloadTask *downloadTask = [downloadInfo objectForKey:kMZDownloadKeyTask];                               NSString *downloadingStatus = [downloadInfo objectForKey:kMZDownloadKeyStatus];                               NSInteger indexOfObject = [downloadingArray indexOfObject:downloadInfo];                               if([downloadingStatus isEqualToString:RequestStatusDownloading])                               {                                   [downloadTask suspend];                                   [downloadInfo setObject:RequestStatusPaused forKey:kMZDownloadKeyStatus];                                   [downloadInfo setObject:[NSDate date] forKey:kMZDownloadKeyStartTime];                                                                      [downloadingArray replaceObjectAtIndex:indexOfObject   withObject:downloadInfo];                                                                  }}}
以上是我在运行过程中崩溃的地方,在遍历的过程中数据突然发生变化产生的错误,要把参照数据源和要修改的数据源分开才不会发生异常,

解决如下:

NSMutableArray *tempArray = [downloadingArray copy];                       for(NSMutableDictionary *downloadInfo in tempArray)                       {                           if ([[downloadInfo objectForKey:kMZDownloadKeyFileName] isEqual:s9id])                           {                                                              NSURLSessionDownloadTask *downloadTask = [downloadInfo objectForKey:kMZDownloadKeyTask];                               NSString *downloadingStatus = [downloadInfo objectForKey:kMZDownloadKeyStatus];                               NSInteger indexOfObject = [tempArray indexOfObject:downloadInfo];                               if([downloadingStatus isEqualToString:RequestStatusDownloading])                               {                                   [downloadTask suspend];                                   [downloadInfo setObject:RequestStatusPaused forKey:kMZDownloadKeyStatus];                                   [downloadInfo setObject:[NSDate date] forKey:kMZDownloadKeyStartTime];                                                                      [downloadingArray replaceObjectAtIndex:indexOfObject   withObject:downloadInfo];                                                                  }}}



0 0
原创粉丝点击