2010-07-10 55 views
1

这个问题来源于此另外一个我刚才问:Calling custom Objective-C from a pyobjc application?如何从iPhone项目中的代码编译OSX Cocoa框架?

我想从它的服务器端组件在我的iPhone应用程序,它运行在OSX应用程序逻辑的重新使用一小部分。根据我在其他问题中被告知的情况,看起来我需要从这个小小的应用逻辑中为iOS和OSX编译一个“框架”。

如果我们假设我能够将此框架中的所有代码隔离为一个没有其他非Cocoa依赖项的.h/.m对文件,那么最简单的方法是什么XCode为每个架构构建这个框架并避免在服务器上对所有这些逻辑进行双重编码?

我尝试添加一个新的OSX的框架构建的目标,我的iPhone项目,但这个并没有得到很远的XCode很快捞出用:

目标指定产品类型“com.apple.product -type.framework”,但有在没有这样的产品类型‘iphonesimulator’平台

任何帮助非常赞赏,因为我目前重复数据删除技术,实现让事情向前发展,但这显然漂亮成为一个巨大的当实现稍微不同步时浪费时间和错误来源。

+0

我不确定我明白你想要做什么。你将不得不编译你的代码两次,一次是OS X,一次是iOS;这是没有办法的。为什么你不能只有两个单独的XCode项目包含相同的源文件? – 2010-07-10 23:35:20

+0

嗨亚当 - 是的,我知道我将不得不为两种不同的体系结构(OSX/iOS)进行编译,但我只是试图找到最简单的方法(就正在进行的开发和调试而言)。我将尝试制作一个新的XCode项目,它只是为OSX生成框架并仅包含相关文件,但我希望能够从一个XCode项目中完成所有工作。不知道这是否会工作,因为不知道是否可以指示XCode只将项目文件的一个子集编译到特定目标中... – glenc 2010-07-11 11:32:34

+0

因此,看起来像这种方法已经工作,我创建了一个单独的XCode项目来编译OSX的特定类和我现在可以通过objc.loadBundle()将它们加载到服务器上。谢谢你的帮助! – glenc 2010-07-11 15:16:50

回答

0

亚当对我原来的问题的评论回答了这个问题。虽然仍然有兴趣看看是否有办法通过一个XCode项目来完成,但我现在的解决方案已经足够满足我想实现的目标。

1

取决于您在自定义班级中使用的内容。如果您没有使用UIKit/AppKit中的任何内容,那么该类可能在任一平台上都能很好地运行,否则,您必须使用目标条件并包含专门为这两个平台编写的单独代码。

您可以在一个Xcode项目中拥有多个目标,它们的Base SDK分别为Mac/iDevices设置。

+0

嗨Evadne,是的,没有什么来自类中的AppKit,它需要有条件的#includes才能使它在OSX上工作。我尝试在XCode中设置额外的目标(体系结构= 32/64位通用)和(Base SDK =当前Mac OS),但仍然在我的原始文章中提到了错误。在项目配置中是否还有其他需要完成的工作,以便在您可以想到的单个XCode项目中完成此项工作? – glenc 2010-07-11 11:28:19

相关问题