繁体   English   中英

NSInvalidArgumentException iOS

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM