gpt4 book ai didi

objective-c - 尝试呈现 UIActivityViewController 时崩溃

转载 作者:行者123 更新时间:2023-12-03 17:20:35 24 4
gpt4 key购买 nike

我在 Crashlytics 中看到的崩溃有时比我的用户发生的情况要多。在以下代码的最后一行中呈现 UIActivityViewController 时会发生崩溃:

NSData* snapShot = ... ;

UIActivityViewController *activityViewController = [[UIActivityViewController alloc] initWithActivityItems:[NSArray arrayWithObjects:activityTextsProvider, snapShot ,nil] applicationActivities:[NSArray arrayWithObjects:customActivityA, customActivityB, customActivityC, nullptr]];

activityViewController.excludedActivityTypes = [NSArray arrayWithObjects:UIActivityTypePrint, UIActivityTypeAssignToContact, UIActivityTypeMail, UIActivityTypeCopyToPasteboard, nil];
activityViewController.popoverPresentationController.sourceView = self.myButton;
activityViewController.popoverPresentationController.sourceRect = self.myButton.bounds;

activityViewController.completionWithItemsHandler = ^(NSString *activityType, BOOL completed, NSArray *returnedItems, NSError *activityError)
{
...
};

[self presentViewController:activityViewController animated:YES completion:nil];

我在主线程中执行此操作,无法在本地重现此崩溃。这次崩溃的原因可能是什么?

<小时/>

编辑:我将 nullptr 更改为 nil,但问题仍然发生。我设法重现了这个问题:只有在打开事件 Controller 之前我显示了 UIMenuController 时才会发生崩溃。创建 UIActivityViewController 时,它不是 nil,但是在呈现 Controller 时,我看到 presentViewController 行中发生崩溃,并且事件 Controller 显示为 nil

最佳答案

József 解决了在评论中使用 nullptr 的问题,Fogh 指出实际的崩溃日志很重要(请编辑您的问题并发布完整的崩溃日志),但我想指出其他事情。

您假设初始化 activityViewController 的调用成功。您应该进行防御性编码(假设所有可能失败可能都会失败,并在运行时对此进行测试)。将其余的配置和演示包含在 if (activityViewController != nil) {} 条件中(您可能也应该有一个具有适当错误处理/报告功能的 else ),以便您正确地检测到由于多种原因(例如 Nib 放错位置、资源丢失等)而导致的全面初始化失败。

就您的情况而言,我认为初始化可能会失败,因为您的类正在使用错误的数组执行某些操作,正如 József 的 nullptr catch 所暗示的那样。也许您正在使用一个或多个 C++11 之前的 c 库/使用非 C11/gnu11“C 语言方言”build设置进行编译,并且 nullptr 不等于 nil,导致在一个假定为 nil 终止的数组中产生奇怪的结果?

注意:如果事实果真如此,我会很乐意投赞成票,但宁愿 József 发表他的评论作为答案,这样您就可以给予他适当的信任。 (如果/当发生这种情况时,请随时从我的答案中编辑此请求。)

关于objective-c - 尝试呈现 UIActivityViewController 时崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30048203/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com