【问题标题】:Crash while setting completion handler for TWTweetComposeViewController为 TWTweetComposeViewController 设置完成处理程序时崩溃
【发布时间】:2012-09-26 04:14:20
【问题描述】:

好的,这是我的应用程序中的第一个地方,我正在使用一个块来做任何事情,所以我需要检查一些设置或 Xcode 设置吗?在我看来,这似乎是对块的简单使用,没有做任何花哨的事情,但它在 iOS 6 模拟器中崩溃:tweetViewController.completionHandler = ^(TWTweetComposeViewControllerResult result)

- (void) showTweetComposer
{
    TWTweetComposeViewController *tweetViewController = [[TWTweetComposeViewController alloc] init];

    [self presentViewController:tweetViewController animated:YES completion:nil];

    tweetViewController.completionHandler = ^(TWTweetComposeViewControllerResult result)
    {
        [self dismissModalViewControllerAnimated:YES];
    };

    [tweetViewController release];
}



thread #1: tid = 0x1c03, 0x02e3d09f libobjc.A.dylib`objc_msgSend + 19, stop reason = EXC_BAD_ACCESS (code=2, address=0x0)
    frame #0: 0x02e3d09f libobjc.A.dylib`objc_msgSend + 19
    frame #1: 0x02e28cc9 libobjc.A.dylib`objc_setProperty_nonatomic_copy + 49
    frame #2: 0x051c38b2 Social`-[SLTwitterComposeViewController setCompletionHandler:] + 47
    frame #3: 0x001e2e06 MyApp`-[SocialViewController showTweetComposer] + 246 at SocialViewController.m:137
    frame #4: 0x001e2ff7 MyApp`-[SocialViewController tweetToFriendsRowTouched] + 247 at SocialViewController.m:150
    frame #5: 0x02e3f663 libobjc.A.dylib`-[NSObject performSelector:] + 62
    frame #6: 0x0018b4f1 MyApp`-[GroupedTableViewController tableView:didSelectRowAtIndexPath:] + 401 at GroupedTableViewController.m:143

无论我是否登录 Twitter,都会发生这种情况。

编辑:我在 showTweetComposer 方法的开头添加了一个简单的基于块的代码 sn-p,以测试任何类型的块在我的代码中是否有效:

[UIView animateWithDuration:0.2 动画:^{ self.view.alpha = 0.0; } 完成:^(布尔完成){ [self.view removeFromSuperview]; }];

现在它在这个新块上崩溃了。所以,我的项目中似乎有些东西需要设置为支持使用块,但我不确定那会是什么。我的 iOS 部署目标设置为 iOS 4.3。

【问题讨论】:

  • 看起来 tweetViewController 可能在块可以执行之前被释放。
  • 它在设置 completionHandler 时崩溃了,所以它甚至没有达到运行块的程度。
  • 嗯,我在 iOS 6 模拟器上试过你的代码,它运行良好。似乎它必须是别的东西。
  • 在呈现视图之前尝试设置完成处理程序。
  • 我已经编辑了我的帖子。似乎没有块代码有效,因此它与 TwitterController 没有直接关系。我想我缺少一些项目设置。

标签: iphone ios twitter objective-c-blocks


【解决方案1】:

好的,解决了。这个要点是,不要使用 -weak_library 对 libSystem.dylib 进行弱链接

找到答案here

【讨论】:

    猜你喜欢
    • 2021-10-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多