我听说过Objective-C,但我自己从未使用过它。我很好奇每个人对它的看法是什么,也与C ++有关。是否有任何类型的项目会更有用或更少用途?
答案 0 :(得分:19)
和其他许多人一样,我刚刚开始关注iPhone的Obj-C。我已经做了很多C ++和C#,从我看到的内容Obj-C有一个与OO基本不同的方法,因为它向C添加了类似Smalltalk的消息。就像C ++一样,它基本上仍然是C兼容的但是OO扩展让您将任何消息发送到任何对象。从这个意义上讲,它不像C ++和C#那样是静态类型的,其中对象可以做的事情与它的类相关联。在Obj-C中,即使它不支持,也可以向对象发送消息。如果对象不知道如何处理它,那么它可以转发它。
真正酷的是你可以在运行时添加接口(协议),你可以添加自己的处理程序来拦截和隐藏现有类的消息处理程序。
总而言之,在消息处理方面有更多的灵活性,更像是你在Ruby或Smalltalk中所做的。将这种类型的OO移植到C上是否是一个好主意我还不知道,在某些方面,C ++方法与C的原始思想更好地融合,但另一方面,Obj-C OO方法更多OO纯粹主义者喜欢什么。
答案 1 :(得分:15)
来自"Some nice features of the Objective-C language":
答案 2 :(得分:12)
我发现objective-c的语法比c ++的语法更清晰,虽然我知道我在这里是少数
答案 3 :(得分:5)
Objective C的OO功能使用动态类型而不是静态(编译时)类型。这是两种语言方法的主要区别 - 无论是否优势取决于您对静态与动态类型的看法。
答案 4 :(得分:4)
我的观点是,Objective-C的语法起初有点“怪异”,特别是如果你来自C / C ++背景(就像我一样)。如果您打算为Mac或iPhone编写应用程序,可以开发Cocoa开发 。今年春天,我有机会在Mac上进行了一个月的开发,并选择使用Qt库在C ++中编写它,因为我对它非常熟悉,时间非常重要。
如果您有Mac,请试一试!它上面有很多信息,还有一些很好的开发工具。
答案 5 :(得分:4)
使Objective-C如此出色的部分原因不是语言(虽然 大部分),它是Cocoa(或CocoaTouch)框架随之而来(至少99%的objc用户; - )
实际上,我曾经是旧的“经典”Mac时代的C ++程序员。切换到Objective-C,Cocoa和Mac OS X我发现我变得更有效率。很难准确说明效率有多高,但50%到100%感觉不错。
答案 6 :(得分:3)
如果你正在运行Linux,你可以安装GNUStep,它提供了与Cocoa非常好的兼容性。这可以让您在不拥有Mac的情况下开始Objective-C / Cocoa开发。学习Objective-C的最佳资源[在我看来]是Apple。
http://developer.apple.com/referencelibrary/Cocoa/index.html
答案 7 :(得分:2)
好吧,如果您正在为iPhone等某些平台编码,则需要Objective-C。 Objective-C也使用动态(运行时)类型,许多人喜欢静态(编译时)。
答案 8 :(得分:1)
它比C ++更具动态性,受Smalltalk的影响很大。我发现它并不比C ++“更好” - 相反,有些人却这样做。
答案 9 :(得分:1)
WebKit最初是一个C ++项目(来自KDE的khtml),后来被Apple改编为与Cocoa环境更兼容,从而得到了Objective-C层。
答案 10 :(得分:0)
对于Mac和iPhone开发,它肯定更好。最新版本有一个GC,所以如果你喜欢它,你可能会比C ++更喜欢它。