Objective-c和java之间的区别 [已关闭]
我有Java的经验,想学习objective-c为iPhone编写应用程序。有哪些根本区别?(语法除外)
我有Java的经验,想学习objective-c为iPhone编写应用程序。有哪些根本区别?(语法除外)
从概念上讲,最大的区别是Objective-C是动态类型的,你不调用方法,而是发送消息。这意味着 Objective-C 运行时不关心你的对象是什么类型,只关心它是否会响应你发送的消息。这反过来意味着你可以(例如)创建一个带有 objectForIndex: 方法的类,并用它来代替 NSArray,只要使用它的代码只调用 objectForIndex:
这允许您执行各种时髦的事情,例如将一个对象伪装成另一个类的对象,并且可以在运行时添加方法或在编译时将方法集合(称为类别)添加到预构建的类(如NSString)中。大多数时候,除了类别之外,您永远不会为这些技巧而烦恼。
在更实际的层面上,您会注意到:
ETA:我忘了一件重要的事情,你会想念Java。Objective-C 不支持命名空间。这就是为什么你会看到带有两个(或更多)字母前缀的OBjective-C类,这是我真正希望他们添加的功能。
首先,Objective-C没有为iPhone提供垃圾回收器。在 Mac 上,存在垃圾回收器。
但是,对我来说,最大的区别可能是每个类有2个文件。一个头文件 (.h),您必须在其中声明实例变量、属性和方法。然后是在其中编写方法的实现 (.m) 文件。Objective-C中的属性必须使用@synthesize关键字“合成”,以创建getter和setter方法。
过渡不是太糟糕。这两种语言在对象模型甚至某些语法方面都遵循类似的规则。我实际上做了相反的过渡。我从iPhone的Objective-C开始,然后拿起Java进行Android开发。
在不相关的说明中,使用Apple的工具构建UI要容易得多。界面构建器非常简单。将 nib 文件中的 UI 对象连接到代码中的声明非常简单。Instruments 提供了一种简单的方法来检查 CPU 使用率、内存泄漏、分配等。另外,就功能,整体打磨和易用性而言,我每天都会将XCode和Apple的工具用于Eclipse。
如果你精通Java,那么迁移到Objective-C就不会太难。只需准备好[]键并练习键入“释放”即可!