我目前正在学习Objective-C和Cocoa。接下来,我想坚持iPhone编程。当然,我会得到一本书。但我现在已经知道了,Cocoa和Cocoa Touch之间的主要区别是什么。
答案 0 :(得分:8)
Cocoa和Cocoa touch的核心概念是相似的,因为它有一个视图层次结构和响应者链。但是,UIView架构与更新的技术(如CoreAnimation)关系更紧密。
可用的控件类型也会发生变化。
此外,Cocoa touch引入了UIViewControllers的概念,它创建了一个很好的抽象,用于放置与主程序及其拥有的特定视图交互的代码。正如Chuck在评论中指出的,这是在Mac OS X 10.5中的Cocoa中添加的,所以根据你学习Cocoa的方式,你可能会或可能不会意识到它们。
最后,正如其他人所说,目前iPhone上不存在垃圾收集。
答案 1 :(得分:6)
为了增加其他人所说的内容,Cocoa Touch和Cocoa共享了大部分基础。例如,像NSString
这样的数据类型类和像NSArray
这样的集合类在两个框架中都是相同的。像NSURLConnection
这样的其他类基本相同。其他高级框架,例如Core Data,在Cocoa Touch中不存在。
此外,Cocoa Touch是使用Objective-C 2.0开发的。所以UIKit,Cocoa中与AppKit相对应的Cocoa Touch框架,广泛使用了属性。在很多方面,Cocoa Touch比Cocoa更现代。 Cocoa Touch也倾向于使用Objective-C @protocol
语法而不是旧的类别语法来实现Apple所谓的“非正式协议”(即某些方法是可选的协议)
答案 2 :(得分:3)
Objective C是一种动态编程语言 - 有点像C ++,有点像Java。
Cocoa是Mac OS X的应用程序框架。
Cocoa Touch是iPhone和iPod Touch的应用程序框架 - 与Cocoa非常相似。
答案 3 :(得分:1)
基本上它只是您可以使用的框架。对于桌面开发,您可以使用AppKit,对于iPhone开发,您可以使用UIKit。 UIkit显然包括多点触控功能等。
当你开始进行iPhone开发时,这里有一个可能会派上用场的常见问题解答: http://www.plaidworld.com/iphonefaq.txt
编辑: 是的,就像上面提到的帖子一样,即使Objective-C 2.0可用于iPhone开发,也没有GC
答案 4 :(得分:-1)
据我了解,其中一个主要区别是cocoa有自己版本的垃圾收集(像.NET这样的托管内存),但cocoaTouch没有。