@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]; (✅) |
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) | 黑马程序员IT技术论坛 X3.2 |