@property(assign,nonatomic)int age;
//关键字:@property set,get方法合成器,相当于声明了一套age的set,get方法,既然声明了就要实现,到.m中通过@synthesize来实现set,get方法。
//总结:@property相当于声明了一套age的set,get方法,@synthesize相当于来实现set,get方法。同时会帮你生成一个全局变量_ag
nonatomic:非原子性,防止多线程访问属性造成赋值错误,提高效率。
assign:修饰属性,九大基本数据类型(结构体)
retain:修饰基本数据类型。
//对象打点调属性赋值的时候会调set方法(自动调用)
//对象打点调属性取职的时候会调get方法(自动调用)
注意:如果重写set,get方法的时候,不用在里面写self.age会造成死循环(self.age=age是错误的)
alloc 创建对象 init初始化
在.h中@property之后,需要到.m中@synthesize。但在高版本中省略不写,系统默认实现。
//重写父类的初始化方法 .h中 -(id)init;
id:弱类型,什么样的对象都可以用id来保存
初始化格式
.m
-(id)init{
self=[super init];//初始化父类
if (self)
{
self.age=10;//初始化子类
self.sex=@"女性";
}
return self;
}
一般在调用方法的时候,顺序,自己有,调用自己的;自己没有,调用父类的,父类没有调用父类的父类,直到NSObject,如果NSObject
recognized识别
初始化子类的时候,要先初始化父类
super 父类的对象
如果说父类初始化成功self=[super init];,再去初始化子类
子类指针能保存父类对象吗?不能!Man *p=[[people alloc]init]; (❌)
能联想什么方法,全靠指针。
父类指针能否保存子类对象?可以!people *p=[[Man alloc]init]; (✅) |
|
|