EXC_BAD_ACCESS码= 2个=地址为0x0
问题描述:
我使用的是UIActivityViewController在我的应用程序,我得到一个EXC_BAD_ACCESS码= 2坠毁在iOS 6,而不是iOS的7这里是代码:EXC_BAD_ACCESS码= 2个=地址为0x0
NSArray *activityItems;
NSString *shareText = [NSString stringWithFormat:NSLocalizedString(@"Listen to", nil), self.currentChannel.title, self.currentChannel.itunesUrl];
if (self.currentChannel.mediumThumbnailImage)
{
activityItems = @[shareText, self.currentChannel.mediumThumbnailImage];
}
else
{
activityItems = @[shareText];
}
UIActivityViewController *activityController = [[UIActivityViewController alloc]
initWithActivityItems:activityItems
applicationActivities:nil];
[activityController setCompletionHandler:^(NSString *activityType, BOOL completed) {
// once they have shared, check where they shared the content for analytics
if (completed)
{
NSString *actionName = nil;
NSString *socialName = nil;
if ([activityType isEqualToString:kMailActivity]) {
actionName = kSocialEmail;
socialName = kMail;
} else if ([activityType isEqualToString:kMessageActivity]) {
actionName = kSocialChat;
socialName = kMessage;
} else if ([activityType isEqualToString:kFacebookActivity] || [activityType isEqualToString:kTwitterActivity]) {
actionName = kSocialShare;
socialName = kFacebook;
}
if (actionName && socialName)
{
NSDictionary *data = @{kSocialName: socialName, kSocialContent: shareText};
if (data)
{
[ADBMobile trackAction:actionName data:data];
}
}
}
}];
if (activityController)
{
[activityController setExcludedActivityTypes:
@[UIActivityTypeAssignToContact,
UIActivityTypePrint,
UIActivityTypePostToWeibo,
UIActivityTypeSaveToCameraRoll,
UIActivityTypeAirDrop]];
[self presentViewController:activityController
animated:YES completion:nil];
}
我已经使用NSZombies缩小了发生崩溃的位置,并且在iOS 6中拨打setExcludedActivityTypes:
时发生了这种情况。我知道这个错误意味着某个对象已被过度发布,并且我正在触摸不属于我的内存。我不明白的是为什么这次崩溃只发生在iOS 6中。有人看到可能导致这种情况的东西吗?
答
UIActivityTypeAirDrop
只适用于iOS的7,而不是在iOS的6
您可以检查这样一个恒定的可用性:
if(&UIActivityTypeAirDrop) {
// UIActivityTypeAirDrop is available
} else {
// Its not available. Don't use it.
}
(我在做这个社会的维基,因为我刚刚从上面的用户Larme复制了评论。)
+0
感谢您的帮助!我不能相信我错过了这一点。 –
'UIActivityTypeAirDrop'仅在iOS7以后可用。那可能是造成这次事故的原因。看到那里:https://developer.apple.com/library/ios/documentation/uikit/reference/UIActivity_Class/Reference/Reference.html#//apple_ref/doc/uid/TP40011974-CH1-SW13 – Larme
好吧,文档说它自iOS7起可用。如果你不在测试中添加它,它是否仍然崩溃? – Larme