我对Java很有经验,想学习objective-c来为iPhone编写应用程序.有什么根本区别?(语法除外)
Jer*_*myP 42
从概念上讲,最大的区别是Objective-C是动态类型的,你不调用方法,你发送消息.这意味着Objective-C运行时不关心对象的类型,只关注它是否会响应您发送它的消息.这反过来意味着您可以(例如)使用objectForIndex:方法创建一个类,并使用它代替NSArray,只要使用它的代码只调用objectForIndex:
这允许您执行各种各样的时髦事物,例如将一个对象构成为不同类的对象,并且可以在运行时添加方法或在编译时将方法集合(称为类别)添加到预构建的类(如NSString).大多数时候,除了类别之外,你永远不会为任何这些技巧而烦恼.
在更实际的层面上你会注意到:
ETA:我忘记了一件重要的事情,你会错过Java.Objective-C不支持名称空间.这就是为什么你会看到带有两个(或更多)字母前缀的objective-C类,这是我真正希望他们添加的功能.
str*_*ark 29
首先,Objective-C没有为iPhone提供垃圾收集器.在Mac上,存在垃圾收集器.
但是,对我来说最大的区别可能是每个班级有2个文件.头文件(.h),您必须声明实例变量,属性和方法.然后是您编写方法的实现(.m)文件.Objective-C中的属性必须与@synthesize关键字"合成"以创建getter和setter方法.
转型并不算太糟糕.两种语言在对象模型甚至一些语法方面都遵循类似的规则.我实际上做了相反的过渡.我开始使用Objective-C for iPhone,然后选择Java进行Android开发.
在一个不相关的说明中,使用Apple的工具构建UI要容易得多.界面构建器简单明了.将nib文件中的UI对象连接到代码中的声明非常简单.仪器提供了一种检查CPU使用率,内存泄漏,分配等的简便方法.此外,就功能,整体打磨和易用性而言,我会随时将XCode和Apple的工具带到Eclipse.
如果你在Java中"流利",那么转向Objective-C并不会太难.只需准备好你的[]键并练习输入"发布"!
除了一组完全不同的库[1]之外,将立即影响您的最大区别是 Objective-C 不提供垃圾收集器。Apple 库提供了一些与垃圾收集相关的例程和对象,我相信使用引用计数,但您没有在 Java 中习惯的垃圾收集。
除此之外,许多事情都是相似的:单继承、后期绑定等。Objective C 不提供方法重载,但这是一个微不足道的区别。Java 和 Objective-C 在对象模型的工作方式方面相差并不远。对象。C 有一些技巧,例如类别,但一开始您不需要担心这些。
请参阅 Remus 建议的相关C# 问题以获取更多(以及更详细的)信息(并且感谢 Remus 提醒我库的差异 - 我几乎忘记了这个重要的方面)。
| 归档时间: |
|
| 查看次数: |
54635 次 |
| 最近记录: |