UIActivityViewController在设备上呈现时崩溃

4
我在我的项目中添加iOS默认共享表单/UIActivityViewController遇到了问题。它在模拟器上运行良好,但是当使用USB电缆或TestFlight在设备(iPhone)上运行时会崩溃。我收到的错误消息是:

* Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '* -[__NSCFString rangeOfString:options:range:locale:]: nil argument' *** First throw call stack: (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: terminating with uncaught exception of type 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不为空,如果我尝试呈现常规视图控制器,则不会崩溃。 在它崩溃之前,这是堆栈跟踪
我在一个空项目上尝试了完全相同的代码,它可以在模拟器和设备上运行,因此我怀疑问题可能与项目/构建设置有关。

我尝试了你的代码。在模拟器上运行良好。我认为你在其他地方错误地传递了字符串。请仔细检查代码的其他部分。 - user3182143
在调试这个问题时,更多的堆栈跟踪信息会非常有用。 - Tim Johnsen
感谢您的回复,我已经更新了我的问题,并附上了完整的错误信息和项目崩溃前的堆栈跟踪。我还尝试将局部变量更改为私有属性,以防它们中的任何一个过早释放。就像@user3182143所说,我认为这与代码的其他部分有关。但是,只有在呈现activityViewController时才会崩溃,当呈现其他VC时它可以正常工作。而且,我已经确保所有变量在调用它们时仍然存在。我找不到在此过程中调用的任何其他代码部分。 - Dickson Leonard
2个回答

4
原来我需要排除AirDrop才能在设备上使用。
activityVC.excludedActivityTypes = @[UIActivityTypeAirDrop];

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


2

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

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接