【问题标题】:EXC_BAD_ACCESS code=2 address=0x0EXC_BAD_ACCESS 代码=2 地址=0x0
【发布时间】:2014-06-22 02:23:55
【问题描述】:

我在我的应用程序中使用 UIActivityViewController,我在 iOS 6 上遇到 EXC_BAD_ACCESS code=2 崩溃,但在 iOS 7 上没有。代码如下:

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 中。有没有人看到可能导致这种情况的东西?

【问题讨论】:

标签: ios exc-bad-access nszombieenabled


【解决方案1】:

UIActivityTypeAirDrop 仅在 iOS 7 中可用,在 iOS 6 中不可用。

您可以像这样检查常量的可​​用性:

if(&UIActivityTypeAirDrop) {
    // UIActivityTypeAirDrop is available
} else {
    // Its not available. Don't use it.
}

(我将其设为社区 wiki,因为我刚刚复制了上面用户 Larme 的评论。)

【讨论】:

  • 感谢您的帮助!我不敢相信我错过了。
猜你喜欢
  • 2016-09-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多