针对较旧的OS X版本的编译应用程序

问题描述:

我最近将(我的第一个)app提交给AppStore。它适用于OS X 10.8,并使用ShareKit等10.8功能。我也想支持OS X 10.7,以使其可供10.7个用户使用。当然,这意味着10.7版本将不具备ShareKit功能。但我不确定要使用哪种编译设置才能使它们都可用,以便10.8个用户能够使用这些功能,而10.7个用户不会看到它们。针对较旧的OS X版本的编译应用程序

  1. 我试着将Base SDK更改为10.7,但它不会编译。
  2. 我试着将部署目标更改为10.7,保持Base SDK 10.8。它编译了,但我不确定这是否是正确的。也没有10.7机器来测试它。

如果情况2是正确的,我该如何检查代码并使菜单项被禁用?

+0

BTW:你应该订购一个外部硬盘(便宜)用于测试较旧的OS X版本。通过三种方式对其进行分区,您可以灵活地继续使用一些OS X版本。 –

number 2是正确的做法,但能够将sdk更改为10.7非常好,因为一般情况下,如果由于缺少类或方法而无法编译,它将无法运行。

您将需要重新编写代码,以动态检测,如果事情都可以使用...

Class Some108Class = NSClassFromString(@"The10_8Class"); //will be Nil in 10.7 

[var respondsToSelector:@selector(someMethod)]; // returns no if someMethod isn't available 
[SomeClass instancesRespondToSelector:@selector(someMethod)];//same 
+0

我做了同样的工作。谢谢! –