Objective c 链接到未来操作系统中可用的API

Objective c 链接到未来操作系统中可用的API,objective-c,macos,linker,Objective C,Macos,Linker,不涉及细节和违反保密协议 如果OSX的开发者预览告诉我某个API现在是AppKit的一部分,我以前必须将该API作为类的一个类别来实现,那么我如何安排事情,以便针对该未来SDK构建和链接的东西仍能在当前操作系统上运行 因此,从抽象意义上讲,在当前的Lion SDK中,我在类NSFooBar的类别中定义了coolThing方法,以便调用 object.thing=fooBarInstance.coolThing 然而,future SDK告诉我coolThing现在由SDK提供,因此我的类别在构建

不涉及细节和违反保密协议

如果OSX的开发者预览告诉我某个API现在是AppKit的一部分,我以前必须将该API作为类的一个类别来实现,那么我如何安排事情,以便针对该未来SDK构建和链接的东西仍能在当前操作系统上运行

因此,从抽象意义上讲,在当前的Lion SDK中,我在类NSFooBar的类别中定义了coolThing方法,以便调用

object.thing=fooBarInstance.coolThing

然而,future SDK告诉我coolThing现在由SDK提供,因此我的类别在构建时会发生冲突

我是否可以确保我的应用程序仍然在Lion上工作,如果没有这种混乱,当Im链接到未来的SDK时,符号将不可用

if(OSVersion == Lion) {
    return myImplementation;
}
else {
    return SDKNativeImplementaion;
}

我想我可以隐藏在分类中,但看起来有点乱。

这就是你应该这样做的原因。所以你可以称之为wb_coolThing或者类似的东西,而不是coolThing。您的category方法可以在运行时检查是否有coolThing方法,如果可用,则调用该方法,如果没有,则使用您自己的实现。

这是一个好的观点。问这个问题帮我解决了。我已重命名该方法,并在类别中放置了respondToSelector。谢谢
if(OSVersion == Lion) {
    return myImplementation;
}
else {
    return SDKNativeImplementaion;
}