最近读了一篇关于 Objective-C 的文章,我觉得它是一门相当简洁的语言,具有很多很酷的功能。
我无意进行任何 iPhone 开发,但是我了解 GCC 能够编译 Objective-C 代码,所以我想知道 -Objective-C 是 Windows 开发中 C99 的可行替代语言吗?
尤其:
- 目前有人使用 Objective-C 进行 Windows 开发吗?
- 是否有任何运行时组件需要与我的应用程序一起分发?
- 我知道 Objective-C 是 C 的超集,这是否意味着可以使用任何 C 兼容的库? (例如 Windows API)
- 我的应用程序会进行垃圾收集吗?
- 我发现了Cocotron http://www.cocotron.org/ and GNUstep http://www.gnustep.org/在谈论在其他平台上使用 Objective-C 时经常会提到这些,但是由于 GCC 已经可以用来编译 Objective-C,我真的不明白为什么我需要这些。
- 在尝试使用 Objective-C 进行 Windows 开发时,是否还有其他可能遇到的陷阱或陷阱?
关于你的第一个问题,我不知道有没有人严重地使用 Objective-C 在 Windows 上进行开发,但可能会有,尽管这些数字可能少于使用像这样的语言进行认真工作的人空白 http://compsoc.dur.ac.uk/whitespace/.
其次,您至少需要 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 运行时中的类型化选择器之类的问题,或大量其他问题。让我通过提出另一个问题来结束这个问题的回答:您可能会遇到针对 .NET 的哪些陷阱或陷阱?我确信其中一些(如果不是大多数)也适用于这种情况。标准陷阱和陷阱适用。
我希望这有帮助。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)