在Windows平台上编写Objective-C的最佳方式是什么?

Cygwin和gcc?有没有一种方法可以将其集成到VisualStudio中?

按照这些思路,对于如何链接并使用Windows SDK来实现类似的功能,有什么建议吗.这是另一种怪兽,但我知道我可以在Windows DLL中编写汇编和链接,让我可以访问这些调用,但我不知道如何做到这一点,而不用谷歌搜索和获取零碎的指导.

有人知道一个好的在线或书籍资源来做或解释这类事情吗?

推荐答案

在前面两个答案的基础上,如果您只想要Objective-C,而不想要任何Cocoa框架,那么gcc将在任何平台上工作.你可以通过Cygwin或get MinGW使用它.然而,如果你想要Cocoa框架,或者至少是其中一个合理的子集,那么GNUStep和Cocotron是你最好的 Select .

Cocotron实现了很多GNUStep没有实现的东西,比如CoreGraphics和CoreData,尽管我不能保证它们在特定框架上的实现有多完整.他们的目标是让Cocotron与最新版本的OS X保持同步,这样任何可行的OS X程序都可以在Windows上运行.由于GNUStep通常使用最新版本的gcc,因此它们还添加了对Objective-C++和许多Objective-c2.0特性的支持.

我还没有用GNUStep测试过这些特性,但是如果你使用一个足够新的gcc版本,你也许可以使用它们.几年前,我无法将Objective-C++与GNUStep一起使用.然而,GNUStep几乎可以从任何平台编译.Cocotron是一个非常以mac为中心的项目.虽然它可能在其他平台上编译,但它是XCode项目文件,而不是makefiles,因此你只能在OS X上开箱即用地编译它的框架.它还附带了在XCode上编译Windows应用程序的说明,但不包括任何其他平台.基本上,为Cocotron建立一个Windows开发环境是可能的,但这并不像为GNUStep建立一个环境那么容易,而且你要自己动手,所以如果你是在Windows上开发,而不是仅仅为Windows开发,GNUStep绝对是一条路要走.

值得一提的是,Cocotron是根据麻省理工学院许可证获得许可的,GNUStep是根据LGPL获得许可的.

Objective-c相关问答推荐

react 本机WebView菜单项目props 无法在iOS&>=16上使用

如何限制 UITextField 中的特殊字符(点和下划线除外)?

如何在 Objective-C 中编写计时器?

是否可以 suppress Xcode 4 静态分析器警告?

将类作为参数传递?

iOS UIImageView 缩小图像在 iPad 2 上产生锯齿图像

将 Objective-C 指针类型NSString *转换为 C 指针类型CFStringRef(又名const struct __CFString *)需要桥接转换

UIRefreshControl iOS 6 xcode

如何在 UICollectionView 中居中行?

在objective-c中创建现在的时间戳作为NSNumber

改变 setContentOffset:animated: 的速度?

Objective-C 属性的默认属性是什么?

如何将 NSDictionary 转换为 NSMutableDictionary?

在 NSMutableArray 的开头添加一个对象?

如何从 AVPlayer(不是 AVAudioPlayer)获取持续时间?

iOS:使用设备修饰符加载 xib 文件?

如何在 Objective-C 中创建一个空白的透明 png?

判断 NSString 是否仅包含字母数字 + 下划线字符

-[MyClassName copyWithZone:] 无法识别的 Select 器发送到实例

目标 C:读取文本文件