使用Objective-C进行Windows开发

Jus*_*tin 9 windows objective-c

最近阅读了一篇关于Objective-C的内容,它让我觉得它是一种相当简洁的语言,有很多很酷的功能.

我无意进行任何iPhone开发,但是我知道GCC能够编译Objective-C代码,所以我想知道 - Objective-C是否是C99用于Windows开发的可行替代语言?

特别是:

  • 有人正在使用Objective-C进行Windows开发吗?
  • 是否有任何运行时组件需要与我的应用程序一起分发?
  • 我理解Objective-C是C的超集,这是否意味着可以使用任何与C兼容的库?(例如Windows API)
  • 我会在我的应用程序中收集垃圾吗?
  • 我发现在讨论在其他平台上使用Objective-C时经常提到的CocotronGNUstep,但是因为GCC已经可以用来编译Objective-C我真的不明白为什么我需要这些.
  • 在使用Objective-C尝试Windows开发时,我可能会遇到任何其他陷阱或陷阱吗?

jer*_*jer 8

关于你的第一个问题,我不知道是否有人认真地做与Objective-C的窗户的发展,但也有可能是,尽管这些数字很可能会小于那些做严肃的工作,像语言的空白.

其次,您至少需要objective-c运行时.有两个运行时,NeXT(现在的Apple)运行时和GNU Objective-C运行时.它们不兼容.如果您使用的是非NeXT和非Apple平台,例如Windows,则您无法选择GNU运行时.

Objective-C是C的超集,是的,如果您希望直接在您的objective-c代码中使用Win32 API.同样,如果您使用保守的收集器,您将只获得垃圾收集,并且它与您正在使用的库相关联.简而言之:不.

GCC的支持是Objective-c语言,运行时,没有标准库.GNU objc运行时在标准库方面为您提供的是两个对象:Object和NXConstantString类,它是支持@""语法所必需的.Object仅仅是一个基类.不是很有用,嗯?这就是为什么存在像Cocotron和GNUstep这样的框架的原因 - 让您可以访问OPENSTEP/Cocoa的实现.

关于陷阱或陷阱,是的:您的应用程序,甚至使用Cocotron或GNUstep可能永远不会移植到Mac,或者您可能会遇到像GNU objc运行时中的类型选择器或许多其他问题.让我通过提出另一个问题来回答这个问题:你可能遇到什么陷阱或陷阱?我敢肯定,如果不是大多数这些也适用于这种情况.标准陷阱和陷阱适用.

我希望这有帮助.

  • @Kragen没有运行时库,Objective-C无能为力.Objective-C的大部分依赖于在运行时做的事情(除了必要的框架:Foundation,CoreFoundation,AppKit),没有必要的库,它是无效的.要使用您的示例,它就像没有任何库的C一样.如果你想做任何事情,你将不得不自己实现它(你不能用Objective-C真正做到这一点). (2认同)