首页 > 代码库 > 黑马程序员 03-@property和@synthesize

黑马程序员 03-@property和@synthesize

———Java培训、Android培训、iOS培训、.Net培训、期待与您交流! ———

 

1、@property 和@synthesize 的作用

(1) 通过@property可以自动生成属性的set,get方法的声明部分

  生成的是set,get方法是哪个属性的,@property后面的名称就是属性去掉下划线后的部分

  例如:

  - (void)setName: (NSString *)name;

  - (NSString *)name;

这两行代码可以用 @property (NSString *)name; 来代替。即通过@property可以自动生成属性_name的set,get方法声明。

(2) 通过@synthesize可以自动生成属性的set,get方法的实现部分

  规则:要告诉@synthesize生成的set,get方法的实现部分是与声明当中哪一个@property相对应。要想得到_name属性,就要

再写=_name。

  例如: 

      - (void)setName: (NSString *)name

  {

    _name = name;

  }

  - (NSString *)name

  {

    return _name;

  }

这几行代码可以用 @synthesize name = _name; 来代替,即通过@synthesize可以自动生成属性_name的set,get方法实现。

2、@property 和  @synthesize 的练习

   Girl 类,属性:姓名、身高、体重

 

 1 #import <Foundation/Foundation.h> 2 //声明 3 @interface Girl : NSObject 4 { 5     NSString * _name; 6     double _height; 7     double _weight; 8      9 }10 @property NSString *name;11 @property double height;12 @property double weight;13 @end14 15 //实现16 @implementation Girl17 @synthesize name = _name;18 @synthesize height = _height;19 @synthesize weight = _weight;20 @end21 22 int main()23 {24     Girl *girl1 = [Girl new];25     girl1.name = @"玲玲";26     girl1.height = 170.0;27     girl1.weight = 50.0;28     NSLog(@"女孩名字叫%@,身高:%.f,体重:%.f", girl1.name, girl1.height, girl1.weight);29     return 0;30 }

 

 

 

黑马程序员 03-@property和@synthesize