2013-05-13 87 views
0

我正在研究iOS6上的cocos2d项目,并且当我尝试在Twitter上共享某些内容时,它不时崩溃。是:SLTwitterComposeViewController发送到已释放实例的消息

  • 仅崩溃上的物理设备(iOS的6.1.3)
  • 它运行而不对模拟器任何问题(iOS的6.1)
  • 当[twitterViewController addImage]问题出现使用
  • 我使用ARC
  • 更新:的问题是身体

\ n字符当我打电话shareOnTwitter功能,它会打开Twitter共享。我可以关闭或发布,并将其视为无效。但是第二次,第三次或甚至更多次按下按钮后,它会以EXC_BAD_ACCESS崩溃。

随着启用僵尸对象我得到这个错误:

[SLTwitterComposeViewController respondsToSelector:]: message sent to deallocated instance

它不会对我的代码任何特定行崩溃。

堆栈:

libobjc.A.dylib`objc_msgSend: 
0x3ad3b5a0: teq.w r0, #0 
0x3ad3b5a4: beq 0x3ad3b5e6    ; objc_msgSend + 70 
0x3ad3b5a6: push.w {r3, r4} 
0x3ad3b5aa: ldr r4, [r0] 
0x3ad3b5ac: lsr.w r9, r1, #2 
0x3ad3b5b0: ldr r3, [r4, #8] <-------- Thread 1: EXC_BAD_ACCESS 
0x3ad3b5b2: add.w r3, r3, #8 
0x3ad3b5b6: ldr r12, [r3, #-8] 
0x3ad3b5ba: and.w r9, r9, r12 
0x3ad3b5be: ldr.w r4, [r3, r9, lsl #2] 

代码:

- (void)shareOnTwitter { 

    UIImage *renderedImage = ...; 

    NSString *text = ...; 

    SLComposeViewController *twitterViewController = [SLComposeViewController composeViewControllerForServiceType:SLServiceTypeTwitter]; 
    [twitterViewController setInitialText:text]; 
    [twitterViewController addImage:renderedImage]; 
    [twitterViewController addURL:[NSURL URLWithString:kAPPURL]]; 
    [twitterViewController setCompletionHandler:^(SLComposeViewControllerResult result){ 

     switch (result) { 
      case SLComposeViewControllerResultCancelled: 
       break; 
      case SLComposeViewControllerResultDone: 
       break; 
      default: 
       break; 
     } 

     [[CCDirector sharedDirector] dismissViewControllerAnimated:YES completion:nil]; 
    }]; 

    [[CCDirector sharedDirector] presentViewController:twitterViewController animated:YES completion:nil]; 
} 

感谢您的帮助!

UPDATE:

当我发表意见,增加了图像的行中的问题解决:

//[twitterViewController addImage:renderedImage]; 

这让我怀疑我的渲染图像功能,所以我更换了符合:

[twitterViewController addImage:[UIImage imageNamed:@"[email protected]"]]; 

而且问题再次显而易见。奇怪的权利?

+0

哪条线崩溃?调用堆栈? ARC还是MRC? – LearnCocos2D 2013-05-13 19:36:27

+0

@ LearnCocos2D我更新了该帖子的更多细节。我会创建一个新的项目,以便稍后测试,也许我在某处丢失了某些东西。 – Firula 2013-05-14 20:12:02

回答

0

最后我明白了!问题是消息文本上的返回字符。最奇怪的是,它似乎只发生在某些文本长度和参数设置。

花了我几个小时来解决问题,并制作了一个导致应用程序崩溃的示例。它只在某些情况下崩溃。例如,对于我提供的文本,如果您对addURL发表评论,它不会崩溃。

注重setInitialText在下面的代码,几乎在文本的末尾有一个\ n字符。这是一个小问题...现在

[twitterViewController setInitialText:@"########################## ###########? ########### ########: #######\n## #######"]; 
[twitterViewController addURL:[NSURL URLWithString:@"http://google.com"]]; 

,如果你更换是在问题相同的代码这段台词,应用程序将一些Twitter的观点驳斥之后崩溃。

我创建了一个新项目并粘贴这条相同的行......它崩溃了。这可能是一个错误SLComposeViewController

相关问题