与C ++相比,使用Objective-C有什么优势
我听说过提及Objective-C,但我自己从未使用过它。我很好奇每个人的普遍看法以及关于C ++的看法。是否有任何类型的项目会更有用或者更有用?
解决方案
对于Mac和iPhone开发,绝对更好。最新版本具有GC,因此,如果我们愿意的话,可能会比C ++更喜欢它。
我的观点是,Objective-C的语法起初有点"怪异",特别是如果我们来自C / C ++背景(就像我一样)。如果我们打算为Mac或者iPhone编写应用程序,那么可可开发是理想之选。今年春季,我有一个机会在Mac上进行了一些开发,并选择使用Qt库以C ++编写它,因为我对此非常熟悉,而时间至关重要。
如果我们有Mac,请试一试!上面有很多信息,还有一些很好的开发工具。
如果我们正在运行Linux,则可以安装GNUStep,它与Cocoa的兼容性很好。这可以让我们在没有Mac的情况下开始进行Objective-C / Cocoa开发。 [我认为]学习Objective-C的最佳资源来自Apple。
http://developer.apple.com/referencelibrary/Cocoa/index.html
像许多其他人一样,由于iPhone,我刚刚开始研究Obj-C。从我看到的内容来看,我已经做了很多C ++和Cand的工作,Obj-C对OO有一种根本不同的方法,因为它向C添加了类似Smalltalk的消息传递。像C ++一样,它基本上仍然与C兼容,但是OO扩展使我们向任何对象发送任何消息。从这种意义上讲,它不是像C ++和C这样的静态类型,对象可以做的事情都与它所在的类绑定在一起。在Obj-C中,即使不支持,也可以向对象发送消息。如果对象不知道如何处理,则可以转发该对象。
真正很酷的事情是,我们可以在运行时添加接口(协议),还可以添加自己的处理程序,以拦截和隐藏现有类的消息处理程序。
总而言之,消息处理具有更大的灵活性,就像我们在Ruby或者Smalltalk中所做的那样。将这种类型的OO嫁接到C上是一个好主意,我还不能说,在某些方面,C ++方法与C的原始思想更好地融合在一起,但另一方面,Obj-C OO方法则更多OO纯粹主义者喜欢什么。
来自" Objective-C语言的一些不错的功能":
- 类是对象
- 动态类型和可选的静态类型
- 分类目录
- 讯息发送
- 富有表现力的消息语法
- 内省
- 动态运行时间
- 自动垃圾收集
- C里面
- 精通C ++
- 简单
- 使用苹果技术
它比C ++更动态,并且受Smalltalk影响很大。相反,我发现它没有比C ++"更好"的东西,但是有些人确实如此。
使Objective-C如此出色的部分原因不是语言(尽管这是很大的一部分),而是它附带的Cocoa(或者CocoaTouch)框架(至少对于99%的objc用户而言;-)
实际上,我曾经是"经典" Mac时代的C ++程序员。切换到Objective-C,Cocoa和Mac OS X后,我发现我的工作效率提高了很多。很难说到底有多少生产力,但是50%到100%的感觉是正确的。
好吧,如果我们要为某些平台(例如iPhone)进行编码,则需要Objective-C。 Objective-C还使用动态(运行时)类型,相比静态(编译时),许多人更喜欢这种类型。
Objective C的OO功能使用动态类型而不是静态(编译时)类型。这是这两种语言的方法的主要区别,究竟是否有优势,取决于我们对静态和动态类型的看法。
WebKit最初是一个C ++项目(来自KDE的khtml),后来被Apple修改为与Cocoa环境更加兼容,从而获得了Objective-C层。
我发现Objective-C的语法比C ++的语法干净一些,尽管我知道我在这方面是少数