[iphone] 为iOS4.3和iOS5.0构建问题



1 Answers

呈现twitter控制器的代码

在此之前,您必须将框架添加为可选项,并在iOS文件为iOS 5的情况下在h文件中进行导入

Class TWTweetComposeViewControllerClass = NSClassFromString(@"TWTweetComposeViewController");

     if (TWTweetComposeViewControllerClass != nil) {
          if([TWTweetComposeViewControllerClass respondsToSelector:@selector(canSendTweet)]) {
              UIViewController *twitterViewController = [[TWTweetComposeViewControllerClass alloc] init];

              [twitterViewController performSelector:@selector(setInitialText:) 
                                          withObject:NSLocalizedString(@"TwitterMessage", @"")];
              [twitterViewController performSelector:@selector(addURL:) 
                                          withObject:url];

               [twitterViewController performSelector:@selector(addImage:) 
                                           withObject:[UIImage imageNamed:@"yourImage.png"]];
                [self.navigationController presentModalViewController:twitterViewController animated:YES];
                [twitterViewController release];
                }
            } 
Question

我遇到了一些问题,试图将一些特定于iOS5的库合并到针对iOS5和iOS4.3的应用中。 我已经经历了以下步骤:

  • 通过在“Link Binary with Libraries”中将其设置为可选,将Twitter框架弱连接起来

  • 将其添加为其他链接器标志中iOS5.0 SDK的框架,使用`-framework Twitter.framework'

  • 有条件地链接类头中的框架:

    #if defined(__IPHONE_5_0) && __IPHONE_OS_VERSION_MAX_ALLOWED >= __IPHONE_5_0
    #import <Twitter/Twitter.h>
    #import <Accounts/Accounts.h>
    #endif
  • 然后在方法本身,我然后检查用户是否设置为Twitter:

    if ([TWTweetComposeViewController class]) {
        self.canTweet = [TWTweetComposeViewController canSendTweet];
    }

这在5.0和4.3模拟器上都能很好地工作。 但是,我有问题让它运行或存档实际设备。

当我有一个3GS运行5.0,或者连接4个运行5.0,都在计划下拉显示了两次。 选择最上面的一个,尝试构建或运行项目失败,并Use of unidentified identifier 'TWTweetComposeViewController'错误。

使用第二个设备条目,构建失败与一个ld: framework not found Twitter.framework错误。

我敢肯定,我在这里错过了一些东西,但我很难过。 任何人都可以建议吗?




如果链接到4.2或更高版本并部署到3.1或更高版本,则可以使用新的弱链接功能来简化此检查。

你必须添加Twitter框架作为可选的,然后

Class TWTweetComposeViewControllerClass = NSClassFromString(@"TWTweetComposeViewController");
if (TWTweetComposeViewControllerClass != nil) 
{
    if([TWTweetComposeViewControllerClass respondsToSelector:@selector(canSendTweet)]) 
    {
          UIViewController *twitterViewController = [[TWTweetComposeViewControllerClass alloc] init];
          [twitterViewController performSelector:@selector(setInitialText:) 
                                      withObject:NSLocalizedString(@"TwitterMessage", @"")];
          [twitterViewController performSelector:@selector(addURL:) 
                                      withObject:url];

          [twitterViewController performSelector:@selector(addImage:) 
                                       withObject:[UIImage imageNamed:@"yourImage.png"]];
          [self.navigationController presentModalViewController:twitterViewController animated:YES];
          [twitterViewController release];
     }
} 



Related