虽然到目前为止最好的Objective-C 编码平台来自苹果公司,但它们绝不仅适用于苹果公司的平台。Objective-C 在Linux、BSD 甚至Windows 等其他平台都有相当久远的历史。根据具体需求,你会发现一些能很好地支持这些替代平台的开源社区。本章将简要介绍一些其他的平台,并告诉你在哪里可以找到更多关于它们的信息。

  在其他平台上使用Objective-C 时面临的最大的挑战在于对能使Objective-C 变得强大的框架的支持。移植Objective-C 语言是一件琐碎的事。由于GNU编译器集合(gcc)开始支持Objective-C,Objective-C 在几乎所有gcc 支持的平台都可用。但是,移植核心框架是一项更加艰巨的任务。

  可以确定的是,Foundation 框架已经有最广泛的跨平台支持。而 Cocoa 和一些高层框架通常在其他平台上就不可用了。也有例外情况,如果你要在OS X 之外的平台运行应用,在考虑使用GUI 框架时就要特别小心。

  对Objective-C和Cocoa所框架一起使用支持最好的主要有GNUstep 和Cocotron。这两个开源项目在移植性技术方面使用完全不同的方法,不过结果是一样的,即支持在Linux、Windows、BSD 和其他平台编写和编译使用Cocoa 和Foundation 的Objective-C 代码。

  GNUstep 

  因为其久远的历史,GNUstep 项目对Foundation 和Cocoa 有一些最好的支持。不过,因为它们的真正的目标是复制NeXTstep 环境,而不是模拟运行应用的Mac OS X 或平台的原生组件集,而它们实际上包含了整个NeXTstep 环境的组件集。这意味着如果你择通过该项目将应用移植到Windows,你的应用在Windows 上运行时,看起来像一个NeXTstep 应用。这包括所使用的菜单类型的方方面面。此外,还有一些和运行GNUstep 应用所需的文件系统相关的问题。最后要确认的一点,为了在Windows 上运行一个GNUste程序,你必须安装完整的GNUstep 文件系统以及众多支持库。这一切可以让一个普通用户困惑。出于完整性考虑,在这里需要提到的是,过去几年间为GNUstep 添加皮肤支持做了一些努力。这样你至少可以创建一个Windows 应用,并使用Windows
的组件集。换言之,GNUstep 致力于图形应用的可移植性,并不断改善,但是目前还说不上完美。总之,对于Foundation 框架,GNUstep 的项目有一些到处可用的最好、最全面的支持。我想说如果你的应用是一个命令行应用,比如服务器,并且打算移植到Windows 或Linux,那么GNUstep项目将很可能可以帮助你实现这些。可以说,利用Mac OS X 上已经写好的现成代码并移植到Windows 的一个较好的方式就是利用Objective-C 和 GNUstep 移植后台、底层非界面的代码。你可写一个原生的图形应用,通过进程间通信进行通信或者将它作为库来链接。这样做可以两全其美。一方面统一了业务逻辑代码,同时还能向用户提供熟悉的原生用户界面。关于 GNUstep 项目的更多信息,可以访问它们的站点http://www.gnustep.org。

  Cocotron

  另一个最近的跨平台Objective-C 方面的尝试就是Cocotron 项目的创建。在将应用移植到MacOS X 之外的平台方面,Cocotron 项目采用不同的方式。Cocotron 为Xcode 提供了一个的交叉编译器环境,这样你可以在Mac OS X 平台上Xcode 里交叉编译你的应用。通过该交叉编译器,你可以编译Windows、Linux 或其他UNIX 桌面版本。以这种方式交叉编译的应用,观感和行为都和原生的应用一致。Cocotron 的工作原理就是利用Xcode 在编译代码时支持多个工具链和SDK的能力。为iPhoneOS 或者 Mac OS X 编译代码时,只需要单击一个按钮的技术使得Cocotron 可以发挥它的威力。如果你觉得将Mac OS X 和Xcode 作为开发环境最惬意,那Cocotron 是一个完美的解决方案。它支持在Mac OS X 上进行所有开发,然后简单地改变SDK 并为目标平台重新编译应用。这似乎还不够,Cocotron 还有一些对Cocoa 和Foundation 框架的最好的第三方支持。它的实现已足以开发同时部署在Mac OS X 和Windows 平台上的Cocotron 商业级应用。Cocotron 相对落后的最大领域在网络、线程处理和一些高层次的框架支持。不过正在积极努力中,而且如果你有足够的预算,你甚至可以和Cocotron 的维护者订立契约来改善你的应用所需要的具体的库。

  

【摘录】在Windows平台上使用Objective-C的更多相关文章

  1. 在Windows平台上安装Node.js及NPM模块管理

    1. 下载Node.js官方Windows版程序:http://nodejs.org/#download    从0.6.1开始,Node.js在Windows平台上提供了两种安装方式,一是.MSI安 ...

  2. Windbg是windows平台上强大的调试器

    基础调试命令 - .dump/.dumpcap/.writemem/!runaway Windbg是windows平台上强大的调试器,它相对于其他常见的IDE集成的调试器有几个重要的优势, Windb ...

  3. 分享一些 Windows 平台上的神器

    下面分享一些 Windows 平台上日常开发使用的软件,有些软件我自认为是神器,可以大大提高效率. 编辑器类软件 IntelliJ IDEA IntelliJ IDEA 内部集成 Java 开发环境, ...

  4. MySQL 在Windows平台上的安装及实例多开

    MySQL在Windows平台上的安装及实例多开   by:授客 QQ:1033553122 测试环境 Win7 64 mysql-5.7.20-winx64.zip 下载地址: https://cd ...

  5. 如何在微软Windows平台上打造出你的Linux开发环境(转载)

    如何在微软Windows平台上打造出你的Linux开发环境 投递人 itwriter 发布于 2013-12-10 11:18 评论(1) 有348人阅读  原文链接  [收藏]  « » 英文原文: ...

  6. 在windows平台上构建自己的PHP(php5.3+)

    这是一篇翻译的文章,原文参见:https://wiki.php.net/internals/windows/stepbystepbuild 顺便提一句,wiki.php.net有很多精彩的内容,想深入 ...

  7. (转)在Windows平台上安装Node.js及NPM模块管理

    本文转载自:http://www.cnblogs.com/seanlv/archive/2011/11/22/2258716.html 之前9月份的时候我写了一篇关于如何在Windows平台上手工管理 ...

  8. cygwin -- 在windows平台上运行的unix模拟环境

    cygwin是一个在windows平台上运行的unix模拟环境,是cygnus solutions公司开发的自由软件(该公司开发了很多好东西,著名的还有eCos,不过现已被Redhat收购).它对于学 ...

  9. 在Linux和Windows平台上操作MemoryMappedFile(简称MMF)

    操作系统很早就开始使用内存映射文件(Memory Mapped File)来作为进程间的共享存储区,这是一种非常高效的进程通讯手段..NET 4.0新增加了一个System.IO. MemoryMap ...

随机推荐

  1. MFC之菜单

    1菜单与菜单项的操作 //获取菜单指针----CWnd::GetMenu() //GetSubMenu()获取子菜单 /CheckMenuItem()加入/取消标记 GetMenu()->Get ...

  2. hdu 2546 饭卡(背包)

      设饭卡余额为total 此题经分析 可以得出:要求选出一些饭菜 时消费量尽量接近total-5元 然后再买一个饭菜 以达到透支... 可以证明 最后买的那个饭菜是饭菜中价值最大的. 证明 设a1 ...

  3. Xamarin.iOS,AOT,JIT,Limitations

    Since applications on the iPhone using Xamarin.iOS are compiled to static code, it is not possible t ...

  4. 在ASP.NET MVC中实现一种不同于平常的三级联动、级联方式, 可用于城市、车型选择等多层级联场景

    三级或多级联动的场景经常会碰到,比如省.市.区,比如品牌.车系.车型,比如类别的多级联动......我们首先想到的是用三个select来展示,这是最通常的做法.但在另外一些场景中,比如确定搜索条件的时 ...

  5. arcgis10.1安装出现1606错误怎么办?找不到盘符

    HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\ESRIHKEY_LOCAL_MACHINE\SOFTWARE\ESRIHKEY_CURRENT_USER\Softwa ...

  6. 【转】IntelliJ IDEA关联SVN

    http://blog.csdn.net/xdd19910505/article/details/52756417 问题描述: IntelliJ IDEA安装之后,使用SVN进行提交或更新以及检出代码 ...

  7. WebRTC 基于GCC的拥塞控制(上)

    转自:http://blog.csdn.net/doitsjz/article/details/56481981 实时流媒体应用的最大特点是实时性,而延迟是实时性的最大敌人.从媒体收发端来讲,媒体数据 ...

  8. Java 集合系列之 Vector详细介绍(源码解析)和使用示例

    Vector简介 Vector 是矢量队列,它是JDK1.0版本添加的类.继承于AbstractList,实现了List, RandomAccess, Cloneable这些接口. Vector 继承 ...

  9. Android热修复技术总结

    https://blog.csdn.net/xiangzhihong8/article/details/77718004 插件化和热修复技术是Android开发中比较高级的知识点,是中级开发人员通向高 ...

  10. 【.Net】 C#访问修饰符

    一 类的修饰符:  C#中类的默认修饰符是internal.1 private 只有对包.NET中的应用程序或库才能访问.2 public 不限制对类的访问. 3 protected 只可以被本类和其 ...