——黑马程序员——OC中@property、@synthesize关键字

-----------android培训java培训、java学习型技术博客、期待与您交流!-----------

OC中@property、@synthesize关键字

一、@property关键字

@property是编译器的指令,用来告诉编译器声明属性的访问器(gettr/setter)方法,


特点:免去手工书写get和set方法


一般形式:

@property     类型名     方法名

如:@property     int   age;

相当于进行了age的set和get方法的声明

-(void) setAge:(int) age;

-(int)age;


如果方法名的类型相同可以写在同一行。如:@property  int age, height, weight;


@property的作用

1、在Xcode4.4之前,用于帮我们实现get/set方法的声明

2、在xcode4.4之后,有增强功能,只是用@property而不使用@synthesize关键字

3、声明和实现了_age ,   _name的get和set方法

4、操作的是带有下划线的实例变量

5、如果当前类中,没有下划线的实例变量,则系统会自动生成

6、在.m文件中,生成一个 _score的变量,该变量是私有的,不能被子类继承和访问


二、@property使用注意事项

1、 @property 只能写在@interface ...@end中

2、 @property 用来自动生成成员变量的get/set方法声明(在Xcode4.4以前)

3、 告诉property要生成的get/set方法声明的成员变量类型是什么

4、 告诉property 要生成的get/set方法是哪个属性的,属性名称去掉下划线

5、 @property 生成的 _age,  _name 都是私有变量,是隐藏的,子类和其他类都看不到也不能被继承和

访问


三、@synthesize关键字

@synthesize 关键是在.m文件中定义set和get方法的实现


作用:实现get和set方法,写在@implementation...@end中


一般形式:@synthesize   方法名

如:@synthesize   age


相当于实现了set/get方法,自动生成一个age变量


-(void)setAge:(int) age{

self->age = age; // 并没有生成 _age

}

-(int)age{

return  age; 

}


如果方法名的类型相同可以同时写在一行。如:@synthesize age, height, weight;


四、@synthesize指定实例变量赋值

@synthesize age = _age, weight = _weight;

@synthesize name = _name;

@synthesize  方法名 = 实例变量名


当指定实例变量后,此时不再生成也不再操作默认的实例变量


五、@synthesize关键字使用注意

1、方法名一定要现在.h 文件中使用@property 声明才能使用@synthesize

2、@synthesize 和@property 搭配使用,用于简化set和get方法的声明和实现


六、@property 增强下重写get和set方法

1、以后都使用@property增强格式写get和set方法,除非get和set方法需要子类继承或者访问时才手动书

写get和set方法

2、当用set/get方法对实例变量赋值不合法时,需要对值进行过滤,此时需要重写set/get方法

3、set / get方法只能重写一个,不能同时都重写,两个要都重写时需要用@synthesize才可以重写


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值