Android、iOS大不同(二)
面向对象的一些知识点
代表对象自己的
Java使用this表示对象自己
1 | this.age = 10; |
而Objective-C使用self代表
1 | self->age = 10; |
通用类型
JAVA中,所有类都默认继承Object,所以可以用Object代表所有对象的类型。
Objective-C中,所有对象都继承NSObejct,而且Objective-C提供了一个id类型,可以代表所有对象的类型。
当通过id类型的变量来跟踪对象的所属的类,它会在运行时判断该对象所属的类,并在运行时确定需要的动态调用方法。
1 | id p = [[Person alloc] init]; |
方法
Obejective-C和Java中,类是一等公民,所有的方法都不能独立存在,方法必须属于类或者对象。
在Java中,被static限定的就是类方法;Objective-C中,类方法用+标识。
- 方法只能在类中定义,不能单独存在
- 方法要么属于类本身,要么属于类的一个对象
- 永远不能单独执行方法,执行方法必须使用类或者对象作为调用者
参数可变的方法
在java中,最后一个参数的变量类型后增加...即可表示方法接受可变参数
参数可以视为一个数组处理
1 | public int add(int x,int... args) |
在Obejctive-C中,最后一个形参后增加,...(逗号三点)表示方法可接受对个参数值
为了获取可变形参,可以使用如下关键字
- va_list 类型,定义可变参数列表的指针变量
- va_start 函数,该函数指定开始处理可变形参的列表,并让指针变量指向可变形参列表的第一个参数
- va_end 函数,结束处理,释放指针变量
- var_arg 函数,返回获取指针指向的参数的值,并一定指针到下一个参数
1 | @interface VarArgs : NSObject |
类变量
Java中类定义时,使用static限定的变量,就是类变量
Objective-C不支持真正意义上的泪变量,一般通过内部全局变量来模拟变量
1 | static NSString* nation = nil; |
单例模式
如果一个类只能创建一个类型,则这个类被称为单例类
在Java中使用private隐藏构造方法,只暴露getInstance()方法来获取对象
1 | public class Singletion { |
Objective-C通过static全局变量定义单例指针
1 | @interface Singleton : NSObject |

