在OS X(Objective-C)和iOS(Swift)之间共享代码

时间:2015-05-04 18:53:46

标签: ios objective-c macos cocoa swift

我有一个用Objective-C编写的Mac应用程序。现在我想制作一个用Swift编写的iOS版本。

我从一开始就遵循MVC模型。

我想在两个平台上共享模型代码。现在我遇到了一个我无法解决的问题。在Objective-C模型类中,我使用了NSFont,这在iOS上不存在。使用UIFont会给我一个未知的错误。那里没有UIKit

我需要做什么才能在一个课程中使用AppKitUIKit

我在这里做了什么:

#if TARGET_OS_IPHONE
UIFont* font;
#else 
NSFont* font;
#endif

感谢您的帮助!

2 个答案:

答案 0 :(得分:2)

浏览WWDC视频。有一个视频,苹果工程师解释他们所做的工作,以获得MacOS和iOS之间常见的Pages和Numbers代码。这应该给你一些想法。

如果你在Objective-C中拥有庞大的代码库,那么在将其更改为Swift时我并没有立即获得优势。

对于您希望会员成为NSFont或UIFont的情况,您的方法根本不起作用。在头文件中有更容易的地方

#if TARGET_OS_IPHONE
typedef UIFont MyFont;
#else 
typedef NSFont MyFont;
#endif

避免在代码中只有ifdef。

答案 1 :(得分:0)

简短的回答:你做不到。您需要编写使用UIKit for iOS和AppKit for Mac OS的有条件编译的代码。