__NSPlaceholderDictionary initWithObjects:forKeys:count:crash

时间:2017-02-03 15:32:33

标签: ios objective-c

我有以下代码:

queryParams = @{@"geo_location" : [GlobalData sharedGlobalData].latLong, @"sale_ids": selectedSaleId};

它有时在实时应用程序崩溃,但我们无法重现崩溃。我一直试图分析报告并了解崩溃的原因,但我没有成功。

我想帮助了解在什么情况下会发生以下崩溃:

1 __exceptionPreprocess + 1245624
2 libobjc.A.dylib objc_exception_throw + 34136
3    CoreFoundation    -[__NSPlaceholderDictionary initWithObjects:forKeys:count:] + 81576
4    CoreFoundation    +[NSDictionary dictionaryWithObjects:forKeys:count:] + 81176
5    MyApp    -[SaleViewController loadStores] (SaleViewController.m:378)
6    MyApp    -[SaleViewController viewDidLoad](SaleViewController.m:158)
7    UIKit    -[UIViewController loadViewIfRequired] + 63776
8    UIKit    -[UIViewController __viewWillAppear:] + 160944
9    UIKit    -[UINavigationController _startCustomTransition:] + 1766832
10   UIKit    -[UINavigationController _startDeferredTransitionIfNeeded:] + 818800
11    UIKit    -[UINavigationController __viewWillLayoutSubviews] + 817880

1 个答案:

答案 0 :(得分:1)

当集合中的一个值为零时,崩溃是什么样的。您可以使用条件来防御此崩溃:

if ([GlobalData sharedGlobalData].latLong && selectedSaleId) {
    queryParams = @{@"geo_location" : [GlobalData sharedGlobalData].latLong, @"sale_ids": selectedSaleId};
}

或者,或者手头的调试任务是找出为什么这两个值都是零。