我听说过Objective-C,但自己从未使用过。我很好奇大家对它的看法,无论是一般性的还是与C ++相关的。它在哪些类型的项目中会更有用或不太有用?
我听说过Objective-C,但自己从未使用过。我很好奇大家对它的看法,无论是一般性的还是与C ++相关的。它在哪些类型的项目中会更有用或不太有用?
像许多人一样,因为 iPhone 的缘故,我刚开始学习 Obj-C。我已经做了很多 C++ 和 C#,从我所看到的来看,Obj-C 在面向对象方面有一个基本不同的方法,它将 Smalltalk- 类似的消息传递添加到 C 中。与 C++ 一样,它基本上仍然与 C 兼容,但是 OO 扩展允许您向任何对象发送任何消息。在这个意义上,它不像 C++ 和 C# 那样是静态类型化的,其中对象可以执行的操作与其所属的类相关联。在 Obj-C 中,即使对象不支持它,您也可以向对象发送消息。如果对象不知道如何处理该消息,则可以转发该消息。
真正酷的事情是,您可以在运行时添加接口(协议),并且您可以添加自己的处理程序,以截取和隐藏现有类的消息处理程序。
总的来说,在消息处理方面有更多的灵活性,更像 Ruby 或 Smalltalk 中要做的事情。至于在 C 上搭载这种类型的 OO 是否是个好主意,我还无法确定,在某些方面,C++ 的方法更符合 C 的原始思想,但另一方面,Obj-C OO 方法更符合 OO 纯粹主义者的思路。
Objective C的面向对象特性使用动态类型而不是静态(编译时)类型。这是两种语言方法的主要区别 - 它是否是优势取决于您对静态与动态类型的看法。
http://developer.apple.com/referencelibrary/Cocoa/index.html
如果您正在为 iPhone 等平台编码,则需要使用 Objective-C。Objective-C 还使用动态(运行时)类型,许多人喜欢它胜过静态(编译时)类型。
WebKit最初是一个C++项目(来自KDE的khtml),后来由苹果公司进行了改进,使其更兼容Cocoa环境,并增加了Objective-C层。
对于Mac和iPhone开发来说,它绝对更好。最新版本具有GC功能,因此如果您喜欢这个功能,那么您可能会比C++更喜欢它。