Xcode 4.2, Three20 on iOS 3.0 Symbol not found: _OBJC_CLASS_$_UISplitViewController

Posted

技术标签:

【中文标题】Xcode 4.2, Three20 on iOS 3.0 Symbol not found: _OBJC_CLASS_$_UISplitViewController【英文标题】: 【发布时间】:2011-12-02 16:44:18 【问题描述】:

我正在使用 Xcode 4.2 和 Three20 创建可以在所有 ios 上运行的应用程序。

当我在装有 iOS 3.0 的 iPhone 3G 上运行该应用程序时, 我在调试控制台中看到崩溃并显示以下消息:

dyld: Symbol not found: _OBJC_CLASS_$_UIPopoverController
  Referenced from: /var/mobile/Applications/7AB01877-55F2-4A5F-A835-FF7849D6E285/Xcode4M.app/Xcode4M
  Expected in: /System/Library/Frameworks/UIKit.framework/UIKit

我关注了这个this SO 并修复了崩溃。 现在我收到了另一个崩溃消息:

dyld: Symbol not found: _OBJC_CLASS_$_UISplitViewController
  Referenced from: /var/mobile/Applications/7AB01877-55F2-4A5F-A835-FF7849D6E285/Xcode4M.app/Xcode4M
  Expected in: /System/Library/Frameworks/UIKit.framework/UIKit

我尝试用同样的方法修复这个崩溃,但没有成功。

你知道如何解决这个问题吗?

编辑:(添加有问题的代码)

文件:TTSplitViewController

@interface TTSplitViewController : UISplitViewController 
<UISplitViewControllerDelegate, TTNavigatorRootContainer> 
@private
  TTNavigator* _leftNavigator;
  TTNavigator* _rightNavigator;
  UIBarButtonItem*      _splitViewButton;
  id  _popoverSplitController;

【问题讨论】:

【参考方案1】:

是的。你可以在https://github.com/facebook/three20/pull/695/files 看到拉取请求中的代码。除了 TTSplitViewController 之外,它还解决了 3.1 的所有问题。

它使用了three20的特殊函数来创建一个UIPopViewController

_popoverController =  [[TTUIPopoverControllerClass() alloc] init];
  if (_popoverController != nil) 
    [_popoverController setContentViewController:controller];
    [_popoverController setDelegate:self];
  

您仍然需要注释掉 TTSplitViewController,但这是唯一在 iOS 3.1 中存在问题的类。 (请参阅拉取请求中的 cmets)

【讨论】:

【参考方案2】:

我在 Target Membership 中取消选中 TTSplitViewController.hTTSplitViewController.m。 并评论该行

//#import "Three20UI/TTSplitViewController.h"  

Three20UI.h

并从其 Target Membership 中取消选中 UISplitViewController+TTNavigator.hUISplitViewController+TTNavigator.m

并注释该行

//#import "Three20UICommon/UISplitViewController+TTNavigator.h"  

Three20UICommon+Additions.h

我工作,但我更愿意做类似this SO 的事情,这样我以后可以使用这些类。如果有人知道该怎么做,我会很高兴。

【讨论】:

以上是关于Xcode 4.2, Three20 on iOS 3.0 Symbol not found: _OBJC_CLASS_$_UISplitViewController的主要内容,如果未能解决你的问题,请参考以下文章

使用带有 iOS 5 SDK 的 TTThumbsViewController 时出现奇怪的白条

Xcode 没有找到 openActiveSessionWithReadPermissions: FacebookSDK for iOS 方法

在 Xcode 4.2 中找不到“iostream”文件

iOS 项目将 Xcode 4.2 更新到 Xcode 4.5

ios 5 模拟器在 xcode 4.2 中没有响应

如何在 Xcode 4.2 中包含低于 4.3 的 iOS SDK