java objective-c,Objective-C和java之间的区别

在概念上,最大的区别是Objective-C是动态类型的,你不调用方法,你发送消息。这意味着Objective-C运行时并不关心你的对象是什么类型,只是它是否会响应你发送的消息。这反过来意味着您可以(例如)使用objectForIndex:方法创建一个类,并使用它代替NSArray,只要使用它的代码仅调用objectForIndex:

这允许您执行各种时髦的事情,例如将一个对象设置为不同类的对象,您可以在运行时添加方法,或者在编译时将预定的类(NSString类)添加到方法(称为类别)集合。大多数时候,除了这些类别之外,你永远不会打扰任何这些技巧。

在一个更实际的层面你会注意到:

>语法是不同的

>内存管理更为手动。在iPhone上,您必须使用保留/释放(OS X有垃圾回收)。这实际上并不像听起来那么糟糕。如果您遵循the rules,并将您的实例变量包装在getter和setter中,您将发现自己很少必须写入retain或release。更新:在写了这段时间后,苹果推出了自动引用计数(ARC)。 ARC的观察结果表明,cl ang静态分析仪能够检测每一个缺失(或额外的)保留或释放。所以他们通过使编译器自动保留和释放来扩展原则。除了一些关于强弱关系的简单规则(即一个对象是否声称拥有另一个对象)之外,您可以或多或少地忘记内存管理。此外,ARC可在iOS上使用。

>所有方法都是公开的。这是消息发送范例的直接后果,但您无法定义私有或受保护的方法。

>图书馆要小得多。特别是,你会注意到只有三个集合类NSArray,NSDictionary和NSSet(加上它们的可变版本)。您的理念是您对界面进行编程。运行时担心实现应该是什么。

ETA:我忘了一件重要的事情,你会错过Java。 Objective-C不支持名称空间。这就是为什么你会看到具有两个(或更多)字母前缀的OBjective-C类,这是我真正希望添加的功能。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值