2011-07-08 33 views
0

我有一个使用邮件和打印例程的简单项目。对于打印,我有一个UIPrintPageRenderer的子类。我下面的苹果guidelines使用弱链接类:用于打印的弱链接框架

- The base SDK for your Xcode project must be iOS 4.2 or newer. The name for this setting in the build settings editor is SDKROOT (Base SDK). 
- The deployment target for your project must be iOS 3.1 or newer. The name for this setting is MACOSX_DEPLOYMENT_TARGET (Mac OS X Deployment Target). 
- The compiler for your project must be the LLVM-GCC 4.2 compiler or newer, or the LLVM compiler (Clang) 1.5 or newer. The name for this setting is GCC_VERSION (C/C++ Compiler Version). 
- You must ensure that any frameworks not available in your project’s deployment target are weakly linked, rather than required. See “Weak Linking to an Entire Framework” and “Linking Libraries and Frameworks” in Xcode Project Management Guide. 

问题

我仍然在应用程序启动时收到错误:

2011-07-08 10:47:19.819 MyTestProject[47013:207] *** -[UIWindow setRootViewController:]: unrecognized selector sent to instance 0x5a2aac0 
2011-07-08 10:47:19.821 MyTestProject[47013:207] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '*** -[UIWindow setRootViewController:]: unrecognized selector sent to instance 0x5a2aac0' 
2011-07-08 10:47:19.822 MyTestProject[47013:207] Stack: (
    43358288, 
    44516140, 
    43367003, 
    42829430, 
    42826226, 
    9319, 
    1149252, 
    1153359, 
    1178942, 
    1160439, 
    1192408, 
    47780220, 
    42637468, 
    42633384, 
    1151521, 
    1184626, 
    9129, 
    8997 
) 
terminate called after throwing an instance of 'NSException' 

我得到这个当我尝试运行我的iPad 3.2模拟器应用程序。任何想法为什么?

p.s.代码适用于iPad 4.2和4.3。

回答

3

documentationUIWindow,属性rootViewController仅适用于iOS 4.0和更高(和,因此,这样是setRootViewController):

RootViewController的

根视图控制器为 窗口。

@property(nonatomic,retain) UIViewController *rootViewController

讨论

根视图控制器提供窗口的内容 视图。将 视图控制器分配给此属性 (以编程方式或使用 接口构建器)将控制器的视图作为窗口的内容视图 安装。如果该窗口具有 现有视图层次结构,则在安装新视图 之前,会删除旧视图 。

此属性的默认值为 无。

可用性

可提供的iOS 4.0及更高版本。

这就是为什么你的应用在iOS 3.2上崩溃,而不是iOS 4.2和4.3。

+0

啊!为什么我没有想到这一点。我需要更多的咖啡,这就是为什么。谢谢。 – Mustafa

0

我不认为你将能够在没有任何额外服务的情况下在低于4.2的iOS上打印。在iOs 4.2或更高版本上,预装了支持AirPrint的打印机驱动程序(如果我没有弄错的话)。在较低的iOs上,这些驱动程序未安装且无法安装。

这是从:How to Print a document from iphone below ios version 4.2