我正在使用我的activityViewController中的这一行代码来显示ViewController
[MyClass showShareMenuWithString:@"test string" sender:self];
这是这个方法在MyClass中的声明
+ (void)showShareMenuWithString:(NSString*)text sender:(id)sender{
NSArray* array = [NSArray arrayWithObject:[NSString stringWithFormat:@"%@",text]];
UIActivityViewController *activityView = [[UIActivityViewController alloc] initWithActivityItems:array applicationActivities:nil];
[sender presentViewController:activityView animated:YES completion:nil];
}
在此之后,activityView出现在屏幕上,可以选择一些操作,如发送短信或电子邮件等。在选择其中一个操作后,邮件控制器的SMS将显示在屏幕上,并带有预先填充的数据。但是在取消了这个控制器之后,我的应用程序出现了EXC_BAD_ACCESS错误。这种情况是随机发生的,这种控制器很有可能在没有崩溃的情况下消失。应用程序仅为iPhone,并且数组不是零。
该应用程序没有在iOS7上崩溃。在iPhones上用不同的iOS 7/8进行了测试。有人也有同样的问题吗?有什么发现吗?
发布于 2015-08-30 09:17:04
多亏了@Y.Bonafons
在弹出之后,我没有在以前的控制器中将我的代表设置为0,这就是为什么它试图调用它的方法。
启用僵尸对象对我有很大帮助。
发布于 2019-03-16 21:10:49
另一个可能与UIActivityViewController崩溃相关的问题可能是意外发现为零,而展开一个可选值。
在分配用作在Action扩展将控件返回应用程序时执行的完成处理程序的闭包中,请确保在使用它之前检查可选项。
例如,使用可选绑定来确定可选returnedItems是否包含一个值(天真代码):
activityViewController.completionWithItemsHandler =
{ (activityType, completed, returnedItems, error) in
if let a = returnedItems {
...
} else {
return
}
...
这只是一种尝试的方法,但你肯定可以写得更好。
https://stackoverflow.com/questions/32287605
复制相似问题