【发布时间】:2009-02-26 18:04:55
【问题描述】:
我目前正在学习 Objective-C 和 Cocoa。接下来,我想坚持 iPhone 编程。当然,我会为此买一本书。但我现在想知道,Cocoa 和 Cocoa Touch 之间的主要区别是什么。
【问题讨论】:
标签: cocoa-touch cocoa
我目前正在学习 Objective-C 和 Cocoa。接下来,我想坚持 iPhone 编程。当然,我会为此买一本书。但我现在想知道,Cocoa 和 Cocoa Touch 之间的主要区别是什么。
【问题讨论】:
标签: cocoa-touch cocoa
Cocoa 和 Cocoa touch 的核心概念是相似的,都有一个视图层次结构和响应者链。但是,UIView 架构与 CoreAnimation 等最新技术的联系更加紧密。
可用的控件类型也会发生变化。
此外,Cocoa touch 引入了 UIViewControllers 的概念,它创建了一个很好的抽象来放置与您的主程序和它拥有的特定视图交互的代码。正如 Chuck 在 cmets 中指出的那样,这是在 Mac OS X 10.5 的 Cocoa 中添加的,因此根据您学习 Cocoa 的方式,您可能知道也可能不知道。
最后,正如其他人所提到的,垃圾收集目前在 iPhone 上不存在。
【讨论】:
补充其他人所说的,大部分基础是 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 所谓的“非正式协议”(即某些方法是可选的协议)
【讨论】:
Objective C 是一种动态编程语言 - 有点像 C++,有点像 Java。
Cocoa 是 Mac OS X 的应用程序框架。
Cocoa Touch 是 iPhone 和 iPod Touch 的应用程序框架 - 与 Cocoa 非常相似。
【讨论】:
基本上,它只是您可以使用的框架。对于桌面开发,您将使用 AppKit,而对于 iPhone 开发,您将使用 UIKit。 UIkit 显然包含了多点触控等功能。
当您开始 iPhone 开发时,这里有一个可能会派上用场的常见问题解答: http://www.plaidworld.com/iphonefaq.txt
编辑: 是的,就像上面提到的帖子一样,即使 Objective-C 2.0 可用于 iPhone 开发,也没有 GC
【讨论】:
据我了解,主要区别之一是 cocoa 有自己的垃圾收集版本(像 .NET 一样的托管内存),但 cocoaTouch 没有。
【讨论】: