A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© onlyxiao 中级黑马   /  2016-1-9 10:09  /  1104 人查看  /  1 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

@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]; (✅)

1 个回复

倒序浏览
多谢分享~辛苦了
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马