【发布时间】:2011-01-18 20:43:17
【问题描述】:
我正在学习Objective-C的iOS开发,发现了很多代码示例。
不过,其中一些人说它们仅适用于 Mac OS X(而非 iOS)。
有人可以向我解释一下 Cocoa 和 Cocoa Touch(在库级别)有什么区别,以便我知道哪些代码可以工作,哪些代码不能工作?
【问题讨论】:
标签: objective-c cocoa cocoa-touch
我正在学习Objective-C的iOS开发,发现了很多代码示例。
不过,其中一些人说它们仅适用于 Mac OS X(而非 iOS)。
有人可以向我解释一下 Cocoa 和 Cocoa Touch(在库级别)有什么区别,以便我知道哪些代码可以工作,哪些代码不能工作?
【问题讨论】:
标签: objective-c cocoa cocoa-touch
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 上运行,以及在两者之间移植需要一些工作,但这并不难。
【讨论】:
应用程序框架
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/
【讨论】:
iPhone OS 技术概述的Migrating from Cocoa Touch 部分很好地概述了不同之处,并提供了指向每个层更具体文档的链接。
最大的区别在于 UI 层。在 Mac 上,你有 AppKit 框架,在 iPhone 上,你有 UIKit。较小的差异在于 Foundation 框架(链接在上面的文档中)。
【讨论】:
don't click on the link, it's broken
就 Swift 中的 import 而言
import Cocoa 在 Mac OSX 应用程序中是一样的
import AppKit
import CoreData
import Foundation
而我们不能在 iOS 中 import CocoaTouch
【讨论】:
1) Cocoa 包含 Foundation 和 AppKit 框架,用于开发在 OS X 上运行的应用程序。
2) Cocoa Touch,包括 Foundation 和 UIKit 框架,用于开发在 iOS 上运行的应用程序。
【讨论】:
Cocoa vs Cocoa Touch-
Cocoa - 它是用于 Mac OSX 的应用程序框架,
Cocoa - Foundation + AppKit 框架,
Cocoa Touch - 基础 + UIKIT 框架
【讨论】: