Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/templates/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Objective-C是否仅用于Mac OS/iPhone上的开发?_Objective C_Open Source_Gnustep - Fatal编程技术网

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

Objective-C是否仅用于Mac OS/iPhone上的开发?,objective-c,open-source,gnustep,Objective C,Open Source,Gnustep,我不知道Objective-C,但对我来说它似乎是一种很好的语言。但我所知道的唯一背景是苹果的一切。但是Objective-C甚至在GNU编译器集合中 打开的盒子里少了什么东西吗?还是说Objective-C已经有了更广泛的基础?我很感兴趣的是,是否有公司选择Objective-C来开发他们的产品。嗯,还有一些人仍然在为GNUStep框架而开发。然而,我不知道这个社区有多活跃 但是Objective-C现在大部分是一种苹果语言,正如“2.0”版本的语言是作为OSX 10.5的一部分发布的,这似乎

我不知道Objective-C,但对我来说它似乎是一种很好的语言。但我所知道的唯一背景是苹果的一切。但是Objective-C甚至在GNU编译器集合中


打开的盒子里少了什么东西吗?还是说Objective-C已经有了更广泛的基础?我很感兴趣的是,是否有公司选择Objective-C来开发他们的产品。

嗯,还有一些人仍然在为GNUStep框架而开发。然而,我不知道这个社区有多活跃

但是Objective-C现在大部分是一种苹果语言,正如“2.0”版本的语言是作为OSX 10.5的一部分发布的,这似乎是苹果公司纯粹的内部开发工作

编辑:您可能知道,Apple有一个叫做Cocoa框架的东西,它基本上是指Objective-C的整个库堆栈,包括NSObject公共基类。Cocoa是NextStep库的延续,GNUStep是NextStep库的开源版本。因此,在这两个地方都可以找到许多以NS为前缀的类,但苹果并没有停止在Cocoa中添加新类或更改它们,因此GUI级别的互操作性实际上只是一种理论上的可能性。

。还有一个是用GNUstep构建的操作系统


我认为很多人都喜欢C或C++,如果他们想要一种更现代的语言,他们会使用C语言或java。

< P>我认为苹果的实现只是更好的支持,并且还在积极的发展中。还有一些其他地方,例如,但它们看起来仍然非常接近NextStep/OpenStep级别。不幸的是,从那以后发生了很多事情

我认为ObjC由于历史的怪癖和专有系统的性质而与苹果世界隔离开来

首先,您需要将ObjC与Cocoa分开。ObjC是一种非常原始的语言。我认为这是一种非常优雅的语言,但它非常基本。您可以在C预处理器中实现ObjCv1。同时开发了C++和Objc。C++将大量的基础设施放在适当位置,将C类语法引入到基本上完全不同的语言中。ObjC为C带来了类似于Smalltalk的语法,几乎没有其他东西。甚至像
+alloc
-release
这样的东西也不是ObjC的语言元素。它们是关于
malloc()
free()
*的相当简单的包装,ObjC本身并没有那么有趣(我认为它很优雅)。这与Smalltalk的本质非常相似。如果没有它的对象库,您就无法使用它。有了它的对象库,它的功能非常强大

接下来在名为NeXTSTEP的ObjC之上提供了整个框架。由于NeXT计算机在商业上并没有取得广泛的成功,而且NeXTSTEP是专有的,所以很少有人学习该框架或底层语言。当苹果买下它并将其改造成可可豆时,它仍然是一个专有系统

GNUStep已经存在,但是他们从来没有开发出足够有趣的东西来吸引大量的开发人员(主要的web浏览器或文字处理器等)。在过去几年中,可可已经远远领先于GNUStep。随着iPhone对Cocoa的兴趣上升,GNUStep可能会重新焕发活力,带来一个不错的跨平台开发框架,但我有点怀疑。有C++背景的人会看到C语言,看到了明显的改进。当他们看到ObjC时,他们看到了很多方括号,他们不希望看到它们。对于在“调用方法”范式中长大的人来说,“传递消息”的Smalltalk范式是陌生的,甚至有点可怕。许多开发人员认为他们需要一种强类型语言来避免bug,并且对一个主要依赖于程序员纪律和谨慎一致性的系统感到不舒服。在C#中破解“正常工作”的东西要比在ObjC中容易得多。ObjC确实希望开发人员更多地了解正在发生的事情,而不是依赖编译器来保护您免受黑客攻击

基本上,人们从UNIX中知道C,C++在C++方面有意义,java在C++方面有意义,C是刚刚清理java。ObjC不是这些中的任何一个。这是Smalltalk,没有人再学Smalltalk了


*我最近和一个写了
+alloc
的家伙聊了聊它的历史,他可能会反对我称它为一个简单的包装器,因为它包含了区域。因此,对于了解差异的您来说,将这里的
+alloc
替换为
+new

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

这些链接绝对值得对该主题感兴趣的人查看:

还有Cocotron,这是一个“开源项目,旨在实现一个跨平台的Objective-C API,类似于Apple Inc.的Cocoa文档所描述的API”:


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

Mono团队正在对iPhone开发做一些事情,允许iPhone应用程序在.NET中编写,并使用Mono.NET编译器进行交叉编译。查看


最近的一篇文章谈到了他在objective C和iPhone开发中所做的工作。

@Stephen:我经常感到惊讶的是,人们在说这样的话之前,从来没有读过我们的网站,甚至没有检查过项目的进展情况。:)GNUstep现在密切关注Cocoa,在这一点上,我们比OpenStep做得更多。如果您或其他人想对这个主题有一个真正的看法,请从SVN获取GNUstep,安装它并试用。关于你一无所知的事情的自以为是(如你的r