当前位置:  开发笔记 > 编程语言 > 正文

Objective-C仅用于Mac OS/iPhone上的开发吗?

如何解决《Objective-C仅用于MacOS/iPhone上的开发吗?》经验,为你挑选了4个好方法。

我不知道Objective-C,但对我来说它似乎是一种很好的语言.但我所知道的唯一背景是Apple的一切.但Objective-C甚至在GNU Compiler Collection中.

开放的那些东西有什么缺失吗?或者Objective-C已经有了更广泛的基础吗?如果有公司选择Objective-C来开发他们的产品,我很感兴趣.



1> Rob Napier..:

我认为ObjC通过历史的怪癖和专有系统的本质已被孤立到Apple世界.

首先,您需要将ObjC与Cocoa分开.ObjC是一种非常原始的语言.我认为这是一种非常优雅的语言,但它非常基础.您可以在C预处理器中实现ObjCv1.C++和ObjC大约在同一时间开发.C++提供了大量的基础设施,可以将基于C语言的语法带入基本上完全不同的语言.ObjC为C带来了类似Smalltalk的语法,几乎没有别的.甚至喜欢+alloc-release不是ObjC的语言元素.他们是相当简单的包装malloc()free().*独立站立,ObjC并不是那么有趣(我认为它很优雅).这与Smalltalk的性质非常相似.没有它的对象库,你可以用它做很多事情.凭借其对象库,它非常强大.

NeXT在ObjC上提供了整个框架,名为NeXTSTEP.由于NeXT计算机不是广泛的商业成功,并且NeXTSTEP是专有的,因此没有多少人学习框架或底层语言.当Apple购买它并将其转换为Cocoa时,它仍然是一个专有系统.

GNUStep就在那里,但他们从来没有开发过足够有趣的东西来引入很多开发人员(一个主要的Web浏览器或文字处理器等).在过去的几年里,Cocoa已经远远领先于GNUStep.随着iPhone对Cocoa的兴趣的增加,GNUStep可能会重振并带来一个很好的跨平台开发框架,但我有点怀疑它.拥有C++背景的人会看C#并看到明显的改进.当他们看到ObjC时,他们会看到很多方括号,他们并不期望它们.对于那些提出"调用方法"范式的人来说,Smalltalk"传递信息"的范例是陌生的,甚至有点可怕.许多开发人员认为他们需要强类型语言来避免错误,并且对主要依赖于程序员纪律和谨慎一致性的系统感到不舒服.在C#中破解"正常工作"的东西比在ObjC中破解要容易得多.ObjC真的希望更多的开发人员了解正在发生的事情,而不是依靠编译器来保护您免受攻击.

基本上,人们从Unix中了解C,而C++在C方面是有意义的,而Java在C++方面是有意义的,而C#只是清理了Java.ObjC不是这些中的任何一个.它是Smalltalk,没有人再学习Smalltalk了.

*我最近和那个写过+alloc它历史的人聊过,他可能会反对我称之为包含区域的简单包装.因此,对于了解其中的差异,请+alloc在此处替换+new.


啊,那你已经到了Cocoa Nature的中途了.如果我们的行业记得我们在Smalltalk中学到的一半经验教训,那么今天我们将领先两倍.我有一个团队,里面装满了来自优秀学校的新毕业的计算机科学毕业生,我仍然需要教授和重新教授模型 - 视图 - 控制器的基础知识.

2> harms..:

好吧,还有一些人仍在开发的GNUStep框架.但是,我不知道这个社区有多活跃.

但是在大多数情况下,Objective-C现在是一种Apple语言,正如该语言的"2.0"版本是作为OSX 10.5的一部分发布的事实所证明的那样,似乎是Apple的纯粹内部开发工作.

编辑:正如您可能知道的那样,Apple有一个叫做Cocoa框架的东西,它基本上是指Objective-C的整个库堆栈,包括NSObject公共基类.Cocoa是NextStep库的延续,GNUStep是它的开源版本.所以你会发现许多NS前缀类都存在,但Apple并没有停止在Cocoa中添加新类或更改它们,因此GUI级别的互操作性实际上只是理论上的可能性.



3> 小智..:

@Stephen:我经常对人们从未阅读我们网站的方式感到惊讶,甚至在说出这样的事情之前检查项目的进展情况.:) GNUstep现在紧跟Cocoa,我们在这一点上比OpenStep要多得多.如果您或其他人希望对此主题有真正的意见,请从SVN获取GNUstep,安装并试用.关于你一无所知的事情的正义(正如你在这里的反应所证明的那样)毫无意义.

Greg C. GNUstep首席开发人员



4> Felixyz..:

GNUstep实际上比大多数人认为的要活跃得多,非常值得关注.创建跨GNUstep和Cocoa工作的应用程序并不难(意味着可能在OSX,Win,Linux,BSD ......)

对于对该主题感兴趣的任何人,这些链接绝对值得一试:

http://www.gnu.org/software/gnustep/information/aboutGNUstep.html

http://etoileos.com/news/

http://www.nongnu.org/gap/

然后是Cocotron,一个"开源项目,旨在实现类似于Apple Inc.的Cocoa文档描述的跨平台Objective-C API":

http://www.cocotron.org/

编辑:有关使用GNUstep构建的商业跨平台产品的示例,请查看Eggplant.

推荐阅读
ar_wen2402851455
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有