【问题标题】:Cocoa versus Cocoa Touch - What is the difference?Cocoa 与 Cocoa Touch - 有什么区别?
【发布时间】:2011-01-18 20:43:17
【问题描述】:

我正在学习Objective-C的iOS开发,发现了很多代码示例。

不过,其中一些人说它们仅适用于 Mac OS X(而非 iOS)。

有人可以向我解释一下 Cocoa 和 Cocoa Touch(在库级别)有什么区别,以便我知道哪些代码可以工作,哪些代码不能工作?

【问题讨论】:

    标签: objective-c cocoa cocoa-touch


    【解决方案1】:

    Cocoa 通常被称为 Foundation 和 AppKit 框架的组合,而 Cocoa Touch 是 Foundation 和 UIKit 框架的组合。

    Cocoa 和 Cocoa Touch 位于其他框架集合之上以创建 API 堆栈。其他层是媒体、核心服务和核心操作系统。

    Cocoa 和 Cocoa touch 之间的主要区别在于 UI 类和 API 与 Mac OS X 和 macOS 的不同,所以你有 NSTextField 而不是 UITextField。许多类共享相同的功能,只需更改类名即可轻松移植,但大多数都需要进行更多更改,但通常不会太重。

    Cocoa 和 Cocoa Touch 中的 Foundation 框架之间也存在一些差异,最常见的是缺少类,例如,Cocoa 有 NSHost 而 Cocoa Touch 没有。

    您将更多地了解两者之间的细微差别,并且很快就能本能地知道什么可以在几乎/无需修改的 iPhone 上运行,以及在两者之间移植需要一些工作,但这并不难。

    【讨论】:

    • 还有一个区别:Cocoa 是用于 Mac 开发的; Cocoa Touch 用于 iOS 开发。如果某些东西只存在于 Cocoa 中,则无法在 iOS 上使用,如果某些东西仅存在于 Cocoa Touch 中,则无法在 Mac OS X 上使用。
    • 彼得,你应该把它变成答案。,
    • @JimThio 这不是彼得的问题。应该是 Alexandru 将其标记为已回答。
    • 彼得,你应该把它变成“一个”答案。抱歉,是我的错。 Jasa的回答很棒。彼得更了解它的真正含义。至少他值得点赞。
    【解决方案2】:

    应用程序框架
    i) Cocoa 是 Mac OS X 的应用程序框架。
    ii) Cocoa Touch 是 iPhone 和 iPod Touch 的应用程序框架。

    框架
    i) Cocoa:Foundation 和 AppKit。
    ii) Cocoa Touch:Foundation 和 UIKit

    某些课程的缺席
    Cocoa 有 NSHost 而 Cocoa Touch 没有

    API
    i) Cocoa:Cocoa 中使用的所有类都有 NS 前缀 例如:NSTextField
    ii) Cocoa Touch:Cocoa 中使用的类具有 UI 前缀 Ex: UITextField

    MVC 模式
    i) Cocoa:除了 MVC
    ,Cocoa 有多种替代设计模式 ii) Cocoa Touch:iPhone SDK 有一个增强的 MVC 系统,比 Cocoa 中默认的 MVC 性能更好

    其他差异
    App Lifecycle、Sandboxing、Memory Footprint也有区别

    链接:
    http://teks.co.in/site/blog/cocoa-vs-cocoa-touch-beginners-guide/ http://iphonenativeapp.blogspot.in/2011/02/difference-between-cocoacocoa-touch-and.html https://iphonecodecenter.wordpress.com/tag/difference-between-cocoa-cocoa-touch/

    【讨论】:

    【解决方案3】:

    iPhone OS 技术概述的Migrating from Cocoa Touch 部分很好地概述了不同之处,并提供了指向每个层更具体文档的链接。

    最大的区别在于 UI 层。在 Mac 上,你有 AppKit 框架,在 iPhone 上,你有 UIKit。较小的差异在于 Foundation 框架(链接在上面的文档中)。

    【讨论】:

    • 链接坏了..又是七年前的事了。
    • 两周前我有一台 Mac,我只是想找出所有这些可爱的名字是什么。所以我唯一能补充的有用的是(现在无论如何,给我几个星期)don't click on the link, it's broken
    【解决方案4】:

    就 Swift 中的 import 而言

    import Cocoa 在 Mac OSX 应用程序中是一样的

    import AppKit
    import CoreData
    import Foundation
    

    而我们不能在 iOS 中 import CocoaTouch

    【讨论】:

    • 问题问的是框架之间有什么区别,而不是哪些可以导入到哪里。
    • Foundation 已经是 AppKit 的一部分。所以不需要单独导入。
    【解决方案5】:

    1) Cocoa 包含 Foundation 和 AppKit 框架,用于开发在 OS X 上运行的应用程序。

    2) Cocoa Touch,包括 Foundation 和 UIKit 框架,用于开发在 iOS 上运行的应用程序。

    【讨论】:

      【解决方案6】:

      Cocoa vs Cocoa Touch-

      Cocoa - 它是用于 Mac OSX 的应用程序框架,

      Cocoa Touch - 它是用于 iPhone 和 iPod touch 的应用程序框架

      Cocoa - Foundation + AppKit 框架,
      Cocoa Touch - 基础 + UIKIT 框架

      【讨论】:

        猜你喜欢
        • 2021-09-09
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-02-21
        • 1970-01-01
        • 2012-09-12
        • 1970-01-01
        相关资源
        最近更新 更多