oc知识
1.+alloc是分配储存空间,返回的是未初始化的对象 ,调用类方法
person *p1 = [person alloc];
2.-init是构造方法,用来初始化对象,返回对象本身,调动的是对象方法
person *p2 = [person init];
3.@property
可以自动生成某个成员变量的setter和getter方法
@property int age
编译这一行的时候,可以自动扩展为
-(void)setAge:(int)age;
-(int)age;
可以进行重写方法来标示独有的属性。
4.@synthesize 关键字
帮助生成成员变量的setter和getter方法
语法:@synthesize age = _age;
相当于下面的代码:
-(void)setAge:(int)age{
_age = age;
}
-(int)age{
return _age;
}
说明:@syntheseze age = _age: 左边的age代表要把@property int age实现,右边的_age代表访问_age这个成员变量。
如果手动实现了set方法,编译器只会生成get方法和成员变量;get方法相同;
如果两个方法都是手动实现的,那么编译器就不会生成成员变量。
5.点语法
点语法的本质是方法的调用,不是访问成员变量,点语法的本质是转换成相应的setter和get方法,如果没有set和get方法,则不能使用点语法。
使用下列方式是一个死循环:
(1).set方法,self.age = age;相当于是[self setAge:age];
(2)get方法,return self.age; 相当于是[self age];
6.变量的作用域
(1)@public (公开的)在有对象的前提下,任何地方都可以直接访问.
(2)@protected (受保护的) 只有在当前类和子类的对象方法中访问.
(3)@private (私有的) 只有在当前类的对象方法中才能直接访问。
(4)@package (框架界别的) 作用域介于私有和公开之间,只要处于同一个框架中就可以直接通过变量名字访问。
7.多态
多态在代码中的体现,即为多种形态,必须要有继承,没有继承就没有多态。
在调用多态时,会进行动态检测,调用真是的对象方法。
多态在代码中的体现即父类指针指向子类对象。