我正在使用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;
}
答案 0 :(得分: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有问题的类。 (参见拉动请求中的评论)
答案 1 :(得分:0)
我取消选中目标会员资格中的 TTSplitViewController.h 和 TTSplitViewController.m 。
并评论该行
//#import "Three20UI/TTSplitViewController.h"
Three20UI.h 中的
并从目标会员资格中取消选中 UISplitViewController + TTNavigator.h 和 UISplitViewController + TTNavigator.m 。
并评论该行
//#import "Three20UICommon/UISplitViewController+TTNavigator.h"
Three20UICommon + Additions.h
我工作,但我更喜欢做this SO这样的事情,所以我可以稍后使用这些类。如果有人知道怎么做,我会很高兴。