【摘录】在Windows平台上使用Objective-C
虽然到目前为止最好的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的更多相关文章
- 在Windows平台上安装Node.js及NPM模块管理
1. 下载Node.js官方Windows版程序:http://nodejs.org/#download 从0.6.1开始,Node.js在Windows平台上提供了两种安装方式,一是.MSI安 ...
- Windbg是windows平台上强大的调试器
基础调试命令 - .dump/.dumpcap/.writemem/!runaway Windbg是windows平台上强大的调试器,它相对于其他常见的IDE集成的调试器有几个重要的优势, Windb ...
- 分享一些 Windows 平台上的神器
下面分享一些 Windows 平台上日常开发使用的软件,有些软件我自认为是神器,可以大大提高效率. 编辑器类软件 IntelliJ IDEA IntelliJ IDEA 内部集成 Java 开发环境, ...
- MySQL 在Windows平台上的安装及实例多开
MySQL在Windows平台上的安装及实例多开 by:授客 QQ:1033553122 测试环境 Win7 64 mysql-5.7.20-winx64.zip 下载地址: https://cd ...
- 如何在微软Windows平台上打造出你的Linux开发环境(转载)
如何在微软Windows平台上打造出你的Linux开发环境 投递人 itwriter 发布于 2013-12-10 11:18 评论(1) 有348人阅读 原文链接 [收藏] « » 英文原文: ...
- 在windows平台上构建自己的PHP(php5.3+)
这是一篇翻译的文章,原文参见:https://wiki.php.net/internals/windows/stepbystepbuild 顺便提一句,wiki.php.net有很多精彩的内容,想深入 ...
- (转)在Windows平台上安装Node.js及NPM模块管理
本文转载自:http://www.cnblogs.com/seanlv/archive/2011/11/22/2258716.html 之前9月份的时候我写了一篇关于如何在Windows平台上手工管理 ...
- cygwin -- 在windows平台上运行的unix模拟环境
cygwin是一个在windows平台上运行的unix模拟环境,是cygnus solutions公司开发的自由软件(该公司开发了很多好东西,著名的还有eCos,不过现已被Redhat收购).它对于学 ...
- 在Linux和Windows平台上操作MemoryMappedFile(简称MMF)
操作系统很早就开始使用内存映射文件(Memory Mapped File)来作为进程间的共享存储区,这是一种非常高效的进程通讯手段..NET 4.0新增加了一个System.IO. MemoryMap ...
随机推荐
- Html学习笔记3
1表格的标题和表头: <table> <caption>成绩单</caption> <tr> <th>姓名</th> <t ...
- C# 地磅串口编程
C# 地磅串口编程 http://www.cnblogs.com/cancer_xu/archive/2012/09/14/WeighBridge-Com.html http://www.cnblog ...
- Snmp学习总结(六)——linux下安装和配置SNMP
一.安装SNMP 1.1.下载Net-SNMP的源代码 选择一个SNMP版本,比如5.7.1,下载地址如下:http://sourceforge.net/projects/net-snmp/files ...
- ASP.NET MVC中商品模块小样
在前面的几篇文章中,已经在控制台和界面实现了属性值的笛卡尔乘积,这是商品模块中的一个难点.本篇就来实现在ASP.NET MVC4下商品模块的一个小样.与本篇相关的文章包括: 1.ASP.NET MVC ...
- 使用Coding4Fun工具包
Coding4Fun是一款很受WP开发者喜爱的开源类库,对于开发者来说,Coding4Fun上手很简单.只要从CodePlex下载Coding4Fun工具包,下载完成后,解压文件到一个文件夹中,里面有 ...
- I/O会一直占用CPU吗?【转载】
转自:https://www.zhihu.com/question/27734728 知乎上看到的一个提问,可以参考 如下图:(图片摘自网络) 在进行I/O操作的时候,是将任务交给DMA来处理,请求发 ...
- iOS 32位、 64位系统兼容性设置-Xcode创建支持IOS4.3以上版本的应用的方法
方法一: 如果是Xcode 5的话步骤为 点击项目名称->Build Settings->搜索 Architectures 这个里面的原始的值是Standard architectures ...
- 【nginx】配置Nginx实现负载均衡
一文中已经提到,企业在解决高并发问题时,一般有两个方向的处理策略,软件.硬件,硬件上添加负载均衡器分发大量请求,软件上可在高并发瓶颈处:数据库+web服务器两处添加解决方案,其中web服务器前面一层最 ...
- Storm实时计算系统
来自知乎: 伴随着信息科技日新月异的发展,信息呈现出爆发式的膨胀,人们获取信息的途径也更加多样.更加便捷,同时对于信息的时效性要求也越来越高.举个搜索场景中的例子,当一个卖家发布了一条宝贝信息时,他希 ...
- LinkedList、Stack、Queue、PriorityQueue的总结
1.这几种容器的特点 都是按照顺序来存储元素. 取元素的时候的不同点: LinkedList:按照下标随意取元素 Stack:后进先出取元素 Queue:先进先出取元素 PriorityQueue:按 ...