0

我有一个使用邮件和打印例程的简单项目。对于打印,我有一个 UIPrintPageRenderer 的子类。我正在遵循 Apple关于使用弱链接类的指南:

- 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 Simulator 运行我的应用程序时,我得到了这个。知道为什么吗?

ps 代码适用于 iPad 4.2 和 4.3。

4

2 回答 2

3

从 的文档UIWindow,该属性rootViewController仅适用于 iOS 4.0 及更高版本(因此也是如此setRootViewController):

根视图控制器

窗口的根视图控制器。

@property(nonatomic,retain) UIViewController *rootViewController

讨论

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

此属性的默认值为 nil。

可用性

在 iOS 4.0 及更高版本中可用。

这就是您的应用在 iOS 3.2 上崩溃的原因,而在 iOS 4.2 和 4.3 上却没有。

于 2011-07-08T05:36:56.463 回答
0

我认为如果没有任何附加服务,您将无法在低于 4.2 的 iOS 上打印。在 iOs 4.2 或更高版本上,预装了支持 AirPrint 的打印机驱动程序(如果我没记错的话)。在较低的 iO 上,这些驱动程序未安装且无法安装。

这来自:How to Print a document from iphone below ios version 4.2

于 2011-12-08T22:08:32.467 回答