Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在OS X(Objective-C)和iOS(Swift)之间共享代码_Ios_Objective C_Macos_Cocoa_Swift - Fatal编程技术网

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

在OS X(Objective-C)和iOS(Swift)之间共享代码,ios,objective-c,macos,cocoa,swift,Ios,Objective C,Macos,Cocoa,Swift,我有一个用Objective-C编写的Mac应用程序。现在我想制作一个iOS版,用Swift编写 我从一开始就遵循MVC模式 我想在两个平台上共享模型代码。现在我遇到了一个我无法解决的问题。在Objective-C模型类中,我使用iOS上不存在的NSFont。使用UIFont会给我一个未知的错误UIKit在那里不可用 我需要做什么才能在一个类中使用AppKit和UIKit 我在这里做了些什么: #if TARGET_OS_IPHONE UIFont* font; #else NSFont* f

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

我从一开始就遵循MVC模式

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

我需要做什么才能在一个类中使用
AppKit
UIKit

我在这里做了些什么:

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

谢谢你的帮助

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

浏览WWDC视频。在一个视频中,苹果的工程师们解释了他们做了什么,使MacOS和iOS之间的页面和数字代码尽可能多。这会给你一些想法

如果您在Objective-C中拥有庞大的代码库,那么我认为将其更改为Swift不会带来任何直接的好处

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

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

为了避免代码中除了ifdef之外什么都没有

我想我知道你的意思,我做到了。我编辑了我的问题来展示一个例子。该代码给了我以下错误:使用未声明的标识符“UIFont”,这是因为您需要不同的头文件。非常感谢您为我指明了正确的方向!我今天已经看了视频,并重新检查了它。我也查看了Lister示例代码,现在它可以工作了!