【问题标题】:UIActivityViewController crashes when presented on deviceUIActivityViewController 在设备上显示时崩溃
【发布时间】:2016-11-05 04:13:08
【问题描述】:

在我的项目中添加 ios 默认共享表/UIActivityViewController 时遇到问题。它在模拟器上运行良好,但在使用 USB 电缆或 testflight 在设备(iPhone)上运行时崩溃。我得到的错误信息是:

* 由于未捕获的异常“NSInvalidArgumentException”而终止应用程序,原因:“* -[__NSCFString rangeOfString:options:range:locale:]: nil argument' *** 首先抛出调用堆栈: (0x182ddedb0 0x182443f80 0x182ddecf8 0x1836d2ac8 0x1928f90cc 0x1928f8394 0x187f3cc40 0x187f3c844 0x1888f5050 0x182cd6584 0x182ccd2ac 0x1888f4c9c 0x1888f5560 0x187f3cc40 0x187f3c844 0x1883b4bd8 0x18813cc78 0x187f3cc40 0x187f3c844 0x1882c4228 0x1882bd3b8 0x1882bee54 0x1882c1890 0x1880373cc 0x1001ae7b8 0x187f74be8 0x187f74b64 0x187f5c870 0x187f74454 0x187f2cc0c 0x187f6d610 0x187f6cc0c 0x187f3d04c 0x187f3b628 0x182d9509c 0x182d94b30 0x182d92830 0x182cbcc50 0x1845a4088 0x187fa6088 0x100137c88 0x18285a8b8) libc++abi.dylib:以 NSException 类型的未捕获异常终止

这是我使用的代码

-(void)share {
    NSString *item = @"test";
    NSArray *items = @[item];

    UIActivityViewController *activityVC = [[UIActivityViewController alloc] initWithActivityItems:items applicationActivities:nil];
    [self presentViewController:activityVC animated:YES completion:nil];
}

它与“presentViewController”在线崩溃。我已经确保 activityVC 不是 nil 并且如果我尝试呈现常规视图控制器它不会崩溃。这是崩溃前的stack trace

我在一个空项目上尝试了完全相同的代码,它可以在模拟器和设备上运行,这就是为什么我怀疑问题可能出在项目/构建设置上

【问题讨论】:

  • 我试过你的代码。它在模拟器上运行良好。我认为你在其他地方错误地传递了字符串。检查代码的其他部分。
  • 更多的堆栈跟踪将有助于调试。
  • 感谢您的回复,我已经用完整的错误消息和我的项目在崩溃之前的堆栈跟踪更新了我的问题。我还尝试将局部变量更改为私有属性,以防它们中的任何一个被过早释放。就像@user3182143 所说,我相信它与代码的其他部分有关。但它只在呈现activityViewController时在设备上崩溃,它在呈现其他VC时起作用。而且我已经确保所有变量在被调用时仍然存在。我找不到在此过程中调用的代码的任何其他部分

标签: ios objective-c iphone uiactivityviewcontroller


【解决方案1】:

原来我需要排除 AirDrop 才能在设备上运行。

activityVC.excludedActivityTypes = @[UIActivityTypeAirDrop];

我不知道为什么会这样,因为我可以在其他项目中很好地包含 AirDrop(在具有相同 iOS 版本的同一设备上进行测试)。可能有一些项目设置可以允许/禁止 AirDrop。这个答案对我有用,因为我当前的项目不需要 AirDrop,但如果有人能解释为什么 UIActivityTypeAirDrop 仅在我的项目上崩溃,我将不胜感激

【讨论】:

    【解决方案2】:

    我遇到了同样的问题,并通过从我的 UIViewController 类别中删除以下代码来解决它。

    - (void)setTitle:(NSString *)title {
        // ...
    }
    

    【讨论】:

      猜你喜欢
      • 2014-01-17
      • 2019-05-23
      • 1970-01-01
      • 1970-01-01
      • 2014-10-27
      • 1970-01-01
      • 1970-01-01
      • 2015-06-15
      • 2011-05-05
      相关资源
      最近更新 更多