【问题标题】:What are the main differences between Cocoa and CocoaTouch?Cocoa 和 Cocoa Touch 之间的主要区别是什么?
【发布时间】:2009-02-26 18:04:55
【问题描述】:

我目前正在学习 Objective-C 和 Cocoa。接下来,我想坚持 iPhone 编程。当然,我会为此买一本书。但我现在想知道,Cocoa 和 Cocoa Touch 之间的主要区别是什么。

【问题讨论】:

    标签: cocoa-touch cocoa


    【解决方案1】:

    Cocoa 和 Cocoa touch 的核心概念是相似的,都有一个视图层次结构和响应者链。但是,UIView 架构与 CoreAnimation 等最新技术的联系更加紧密。

    可用的控件类型也会发生变化。

    此外,Cocoa touch 引入了 UIViewControllers 的概念,它创建了一个很好的抽象来放置与您的主程序和它拥有的特定视图交互的代码。正如 Chuck 在 cmets 中指出的那样,这是在 Mac OS X 10.5 的 Cocoa 中添加的,因此根据您学习 Cocoa 的方式,您可能知道也可能不知道。

    最后,正如其他人所提到的,垃圾收集目前在 iPhone 上不存在。

    【讨论】:

    • Cocoa 现在有了 NSViewController,所以这没什么区别。
    • 感谢您指出这一点,出于某种原因我没有注意到这一点(可能自从 iPhone SDK 出现以来我还没有做过桌面 Cocoa)。
    • 作为三年后的更新,垃圾收集将永远不会在 iPhone 上存在,现在甚至在 Mac 上已弃用。然而,Apple 已经为 iOS 和 OS X 引入了 ARC,它基本上是两全其美的(内存管理的性能和垃圾收集的友好性)。
    【解决方案2】:

    补充其他人所说的,大部分基础是 Cocoa Touch 和 Cocoa 共享的。例如,NSString 之类的数据类型类和NSArray 之类的集合类在两个框架中是相同的。 NSURLConnection 等其他类基本相同。 Cocoa Touch 中没有其他高级框架,例如 Core Data。

    此外,Cocoa Touch 是使用 Objective-C 2.0 开发的。所以 UIKit,Cocoa Touch 框架对应 Cocoa 中的 AppKit,广泛使用了属性。在许多方面,Cocoa Touch 比 Cocoa 更现代。 Cocoa Touch 也倾向于使用 Objective-C @protocol 语法而不是旧的类别语法来实现 Apple 所谓的“非正式协议”(即某些方法是可选的协议)

    【讨论】:

      【解决方案3】:

      Objective C 是一种动态编程语言 - 有点像 C++,有点像 Java。

      Cocoa 是 Mac OS X 的应用程序框架。

      Cocoa Touch 是 iPhone 和 iPod Touch 的应用程序框架 - 与 Cocoa 非常相似。

      【讨论】:

      • 嗯,呃,我怀疑原始发布者不知道这一点。
      【解决方案4】:

      基本上,它只是您可以使用的框架。对于桌面开发,您将使用 AppKit,而对于 iPhone 开发,您将使用 UIKit。 UIkit 显然包含了多点触控等功能。

      当您开始 iPhone 开发时,这里有一个可能会派上用场的常见问题解答: http://www.plaidworld.com/iphonefaq.txt

      编辑: 是的,就像上面提到的帖子一样,即使 Objective-C 2.0 可用于 iPhone 开发,也没有 GC

      【讨论】:

        【解决方案5】:

        据我了解,主要区别之一是 cocoa 有自己的垃圾收集版本(像 .NET 一样的托管内存),但 cocoaTouch 没有。

        【讨论】:

        • CocoaTouch 对内存有引用计数。 Cocoa 有一个可选的垃圾收集器,但仅适用于 Mac OS X >= 10.5
        • 不再。在 OS X 10.8 (Mountain Lion) 中,Apple 已弃用垃圾收集,而在两个平台上都引入了 ARC。
        猜你喜欢
        • 2011-01-18
        • 1970-01-01
        • 2021-09-09
        • 2019-02-21
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多