我正在研究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]"]];
而且问题再次显而易见。奇怪的权利?
哪条线崩溃?调用堆栈? ARC还是MRC? – LearnCocos2D 2013-05-13 19:36:27
@ LearnCocos2D我更新了该帖子的更多细节。我会创建一个新的项目,以便稍后测试,也许我在某处丢失了某些东西。 – Firula 2013-05-14 20:12:02