IOS 5的UIDocument子类是否向后兼容?

4
为了支持iCloud,我们被鼓励使用一个UIDocument子类。如果我定义了一个新的子类,将项目目标版本设置为3.0,并在使用我的新子类之前使用iOS 5进行测试,那么代码是否可以在iOS 4上运行?还是说链接到子类会破坏向后兼容性?
2个回答

2

UIKit可以弱链接,但如果您尝试初始化UIDocumentUIDocument的子类,则结果将是未定义的。您需要像这样:

if (NSStringFromClass(@"UIDocument")) 
{
    ...
}

那样对你的目的来说完全没有用处。所以你问题的答案是否定的,任何涉及 UIDocument 的代码都无法运行,但你可以在这些代码周围添加条件检查。最好找到一种替代方法来保存数据。

谢谢答案。我不想在iOS4上使用UIDocument,只是不确定是否可以定义一个iOS5的子类,而不会使整个程序在早期版本中无法启动。根据您的有益回答,我的理解是只要确保UIKit是弱链接的(+在实际使用之前检查版本或类的存在),那么似乎应该没有问题,这似乎是在向后兼容的方式实现iCloud功能的正确通用解决方案。 - wordy
已完成。实际上,默认连接设置很好用(新代码会自动弱链接),只要你设置正确的Xcode目标(例如OS 3.1)。确认这个方法可行,但要注意手动弱链接libSystem.dylib,否则使用最新版的XCode构建的代码将在OS 3.x上崩溃(因为"blocks")。 - wordy

0

为了理解子类化UIDocument的含义,它需要与UIDocument链接。例如,如果您有一个名为Bar的类,它是Foo的子类,并且Foo有一个名为“doBaz”的方法,您可以在Bar实例上调用“doBaz”,但是如果链接器不知道Foo,它就不知道Bar可以执行doBaz。

您可能可以进行弱链接。当iOS 4推出时,iPad上最好的iOS 3中没有iAds,这种情况类似。


这取决于 UIDocument 是否可以进行弱链接。由于它是 UIKit 的一部分,所以我认为是的,不是的。 - wjl

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接