【摘录】在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 ...
随机推荐
- 看opengl 写代码(4) 画一个圆
opengl 编程指南 P30 以下代码 是 用 直线 连起来 画一个圆. // circle.cpp : 定义控制台应用程序的入口点. // #include "stdafx.h" ...
- RxJS 简介:可观察对象、观察者与操作符
RxJS 简介:可观察对象.观察者与操作符 对于响应式编程来说,RxJS 是一个不可思议的工具.今天我们将深入探讨什么是 Observable(可观察对象)和 observer(观察者),然后了解如何 ...
- springcloud 分布式服务跟踪sleuth+zipkin
原文:https://www.jianshu.com/p/6ef0b76b9c26 分布式服务跟踪需求 随着分布式服务越来越多,调用关系越来越复杂,组合接口越来越多,要进行分布式服务跟踪监控的需求也越 ...
- NSString 拼接字符串
NSString* string; // 结果字符串 NSString* string1, string2; //已存在的字符串,需要将string1和string2连接起来 //方法1. strin ...
- cocos2d-x 清空缓存
如场景切换 在内存吃紧的情况下 我们可以选择 先清理一下缓存 // 清空缓存 CCDirector::sharedDirector()->purgeCachedData();
- vi 方向键 ABC
解决方法:修改/etc/vim/vimrc.tiny ,增加set nocompatible,然后 保存,作用是关闭 vi 兼容模式
- mysql group by 报错异常解决
mysql报错及其解决方式 1.在使用group by 查询一张表的数据的时候:select date,time,max(delaytime) as delaytime,sum(delaynum) a ...
- Reloading Java Classes 101: Objects, Classes and ClassLoaders Translation
The original link: http://zeroturnaround.com/rebellabs/reloading-objects-classes-classloaders/ A Bir ...
- HTTP和HTTPS的区别(转)
原文链接:HTTP和HTTPS的区别 HTTPS(Secure Hypertext Transfer Protocol)安全超文本传输协议 它是一个安全通信通道,它基于HTTP开发,用于在客户计算机和 ...
- ARM、X86/Atom、MIPS、PowerPC
关注Android的时候,有一些CPU架构方面的术语知识,主要有:ARM.X86/Atom.MIPS.PowerPC1)ARM/MIPS/PowerPC均是基于精简指令集(RISC,Reduced I ...