Iphone 如何改进iOS中的TWTweetComposeViewController代码?
我已经实现了以下代码来进行Twitter共享。在我的代码中,我尝试测试iOS5,如果这不起作用,我会回到使用ShareKit的Twitter代码进行共享的老方法 我向一位同事展示了代码,他建议我的代码可能有缺陷,我需要做两件事:Iphone 如何改进iOS中的TWTweetComposeViewController代码?,iphone,objective-c,ios,sharekit,Iphone,Objective C,Ios,Sharekit,我已经实现了以下代码来进行Twitter共享。在我的代码中,我尝试测试iOS5,如果这不起作用,我会回到使用ShareKit的Twitter代码进行共享的老方法 我向一位同事展示了代码,他建议我的代码可能有缺陷,我需要做两件事: 执行正确的运行时检查??(因为它可能会在IOS 4或更早版本上崩溃),即使它没有 Twitter框架的弱链接 有人能解释一下什么是正确的运行时检查吗?为什么是薄弱环节 NSString *text = [NSString stringWithFormat:@"@Awes
NSString *text = [NSString stringWithFormat:@"@Awesome chart: %@", self.titleLabel.text];
弱链接仅仅意味着不需要在设备上安装框架。或者换句话说,当你向项目中添加框架时,应用程序将要求该框架在设备上。因此,如果你需要一个框架,但它没有,那么应用程序就会崩溃。在您的情况下,如果希望应用程序在iOS 5之前的iOS版本(即iOS 4.x)上运行,您可能希望弱链接twitter框架 正确的运行时检查意味着您应该将应用程序加载到您的设备上(运行iOS 5或更高版本),并测试应用程序的twitter功能。如果它崩溃了,那么你就知道你有问题了 我浏览了你的代码,一切看起来都很好。我没有通过我的编译器运行它,所以我不能说语法错误等等。我要做的一个改变是:
if([tweetcomposeviewcontroller cansendteet])
到
我之所以使用它,是因为它会检查框架是否在该设备上,而canSendTweet
会检查用户是否登录。所以我不想把没有登录的用户和设备不支持iOS5的Twitter的用户混淆
如果您还需要帮助,请告诉我。是另一种选择。它也与iOS 4兼容。我认为您还泄漏了控制器(正如我看到的大多数代码示例一样) 另一方面,您注意了有关完成处理程序的文档,并正确地确保在主线程中执行UI工作。我需要去修复我的实现来做同样的事情
if ([TWTweetComposeViewController canSendTweet])
{
TWTweetComposeViewController *tweetComposeViewController = [[TWTweetComposeViewController alloc] init];
[tweetComposeViewController setInitialText:text];
[tweetComposeViewController addImage:image];
[tweetComposeViewController setCompletionHandler:^(TWTweetComposeViewControllerResult result){
dispatch_async(dispatch_get_main_queue(), ^{
[self dismissModalViewControllerAnimated:YES];
if (result == TWTweetComposeViewControllerResultDone)
{
NSLog(@"iOS 5 onwards Twitter share complete");
}
});
}];
[self presentViewController:tweetComposeViewController
animated:YES
completion:^{ }];
}
else
{
SHKItem *item = [SHKItem image:image title:text];
// Share the message.
[SHKTwitter shareItem:item];
NSLog(@"Device does not support Twitter library");
}
}
Class twClass = NSClassFromString(@"TWTweetComposeViewController");
if (!twClass) // Framework not available, older iOS
return;