[英]NSInvalidArgumentException iOS
我的应用程序已链接到架构,并在crashlytics(iOS 11.2.6 iPhone设备)中找到了:
致命异常:NSInvalidArgumentException ***-[__ NSPlaceholderArray initWithObjects:count:]:尝试从对象中插入零对象[0]-[ApplicationEventsTableViewController actionSheetCreateOperationOfType:]
我坚持解决这种情况,即使在正确检查代码后,我也看不到任何可能引起问题的东西。
代码的一部分是:
- (IBAction)addButtonAction:(id)sender {
NSString *title = @"";
BOOL isMale = [ApplicationUserSettings shared].authorizedUserIsMale;
ApplicationActionSheet *actionSheet = [ApplicationActionSheet actionSheet];
[actionSheet setButtonWithTitle:ApplicationLocalizedString(@"eventsCreateMenuCreateEvent") block:^{
[self actionSheetCreateNewEventDidSelected];
}];
[actionSheet setButtonWithTitle:ApplicationLocalizedString(@"eventsCreateMenuCreateEvenOperation") block:^{
[self displayPaymentAlertOrContinueWithBlock:^{
[self actionSheetCreateOperationOfType:ApplicationOperationTypeIndexEven];
}];
}];
[actionSheet setButtonWithTitle:ApplicationLocalizedString(@"eventsCreateMenuCreateSplitOperation") block:^{
[self displayPaymentAlertOrContinueWithBlock:^{
[self actionSheetCreateOperationOfType:ApplicationOperationTypeIndexSplit];
}];
}];
title = isMale ? ApplicationLocalizedString(@"eventsCreateMenuIBoughtForSomeoneOperationM") :
ApplicationLocalizedString(@"eventsCreateMenuIBoughtForSomeoneOperationF");
[actionSheet setButtonWithTitle:title block:^{
[self displayPaymentAlertOrContinueWithBlock:^{
[self actionSheetCreateOperationOfType:ApplicationOperationTypeIndexIBoughtForSomeone];
}];
}];
[actionSheet setButtonWithTitle:ApplicationLocalizedString(@"eventsCreateMenuIGotMoneyOperationPlural") block:^{
[self displayPaymentAlertOrContinueWithBlock:^{
[self actionSheetCreateOperationOfType:ApplicationOperationTypeIndexTransferToMe];
}];
}];
title = isMale ? ApplicationLocalizedString(@"eventsCreateMenuIGaveMoneyOperationM") :
ApplicationLocalizedString(@"eventsCreateMenuIGaveMoneyOperationF");
[actionSheet setButtonWithTitle:title block:^{
[self displayPaymentAlertOrContinueWithBlock:^{
[self actionSheetCreateOperationOfType:ApplicationOperationTypeIndexTransferFromMe];
}];
}];
[actionSheet setButtonWithTitle:ApplicationyLocalizedString(@"eventsCreateMenuCreateDepositOperation") block:^{
[self displayPaymentAlertOrContinueWithBlock:^{
[self actionSheetCreateOperationOfType:ApplicationOperationTypeIndexDeposit];
}];
}];
[actionSheet setCancelButtonWithTitle:ApplicationLocalizedString(@"eventsCreateMenuCancelButtonTitle") block:^{;}];
[actionSheet showInView:self.view];
}
而且从ApplcationActionSheet.m也可能有用:
+ (id)actionSheet {
return ApplicationActionSheet actionSheet:nil cancelButtonTitle:nil cancelBlock:^{;} destructiveButtonTitle:nil distructiveBlock:^{;}];
}
和
- (void)actionSheet:(UIActionSheet *)actionSheet clickedButtonAtIndex:(NSInteger)buttonIndex {
if (self.cancelButtonIndex == buttonIndex) {
CALL_BLOCK(((ApplicationActionSheetBlock)handlerBlocks_[@"cancelBlock"]));
} else if (self.destructiveButtonIndex == buttonIndex) {
CALL_BLOCK(((ApplicationActionSheetBlock)handlerBlocks_[@"destructiveBlock"]));
} else {
ApplicationActionSheetBlock block = handlerBlocks_[@(buttonIndex)];
CALL_BLOCK(block); << ACTUALLY, the log says it leads to crash >>
}
}
问题出现了两次,但对我而言,重要的是要扎根邪恶。 我有什么选择?
我不确定您要在哪里填充handlerBlocks_
但似乎某个地方nil
。 从字面上看,这就是错误告诉您的内容,您在预期之外的地方只有一个nil
(在Objective-C中极为常见)。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.