Object C 和java比较

1、获取实例对象的不同

在Java中获取一个类实例:类名 instance = new 类构造方法()。这样我们有拥有了一个类的实例,在类中定义的变量,可以在定义的时候进行初始化,也可以在构造方法中初始化。

在OC中获取一个类实例:类名 *instance = [[类名 alloc] init]。在oc中,获得类实例需要两步,alloc分配内存,init初始化内存,而且变量的初始化只能在init(init的一系列方法)中。

2、oc的self和java的this

个人感觉是差不多,至少在使用方面。在java中,调用方法时,编译器会偷偷地把调用这个方法的对象的引用当作参数传给这个方法(我记得,对象new出来后,这个对象中的变量是存在堆上的,但是,方法是在另一个地方存的,同一个类的所有对象是共用这些方法的),然后在方法中,通过this关键字就可以获取这个引用了,不过编码时,一般不需要自己手动用this,编译器会给自动加上。在OC中,在方法中,通过self捕获对象的指针(java中是引用)这个思想和java是一样的,不过调用方法需要显示通过self调用。

this和self,都是即指向子类对象又指向父类对象的,正因为此,所以通过this和self才能访问到父类的方法。(这样的表述可能不对,但意思是这个意思)。

3、全局常量的使用

java中很简单,static final就行

oc,看这篇文章OC 中定义全局常量的方法

4、闭包

在java中很少提及闭包的概念,可能是我一开始就做Android开发了,对java了解的不够深入。一般在java中,定义一个接口,然后用匿名内部类实现闭包。

在OC中,block是对闭包的实现。在java中,我们要想操作一个函数,必须要有一个对象或者类(static方法)。但是,在OC中,可以单独操作一个方法,这个方法可以叫做代码块对象,可以把它理解为一个对象。虽然,语法比较奇怪,我这种初学者总是忘记不知道怎么写,不过使用起来还是挺方便的。可以看看这遍文章:IOS Block代码块的定义与使用

javascript 中闭包的实现和OC差不多,可能当作方法参数,很方便的操作。

5、OC中的属性

在OC中有一个属性(property)的概念,其实就是让程序员不用给变量写get和set方法了,方便开发,其实编译的时候,编译器给自动加上了,最厉害的属性可以用在block上。

Objective-C对象的申请空间与初始化

刨根问底:对于 self = [super init] 的思考

关于 OC 的self = [super init]详解

猜你喜欢

转载自blog.csdn.net/lizhongyisailang/article/details/89329243