OCget、set点语法

先定义一个Student类:

 1 @interface Student : NSObject{
 2     int _age;
 3 }
 4 -(void)setAge:(int)newAge;
 5 -(int)age;
 6 @end
 7 
 8 //实现
 9 @implementation Student 
10 //set方法
11 -(void)setAge:(int)newAge{
12     _age = newAge;
13 }
14 -(int)age{
15     return _age;
16 }
17 @end
1 Student *stu = [[Student alloc] init];
2 //设置age的值
3 [stu setAge:10];
4 //取出age的值
5 int age = [stu age];
6 NSLog(@"age is %i", age);

 

点语法访问age属性:

 1 Person *p = [Person new];
 2 /*
 3 调用set方法
 4    [p setAge:20];
 5    [p setName:@"小明"];
 6 点语法:xcode的特性,xcode帮我们做代码替换
 7 对象.属性名
 8 注意,此时(p.age)并不是直接访问实例变量,
 9 而是xcode 看到点语法(p.age)后会代换成
10 p.age-------->[p setAge:20]
11 */
12 p.age = 20;
13 p.name = @"小明"

 

点方法可以设置变量属性也可以获取变量属性~

点语法注意:

  点语法的本质是方法的调用,而不是访问成员变量,当使用点语法时,编译器会自动展开成相应的方法。

切记点语法的本质是转换成相应的set和get方法,如果没有set和get方法,则不能使用点语法。

 

 

@property关键字:

  可以免去我们手动写get、set方法。

使用:

1 //@property 类型名  方法名
2 @property  int age;
3 //相当于进行了age的set和get方法的声明

 

@property的使用

  1)使用格式:

    @property 数据类型名  方法名(去掉set)

  2)作用

    实现get和set方法的声明

 1 @property  int age;
 2 /*
 3 -(void)setAge:(int)age;
 4 -(int)age;
 5 */
 6 @property  NSString *name;
 7 /*
 8 -(void)setName:(NSString *)name;
 9 -(NSString *)name;
10 */

 

@synthesize作用:

  生成get和set方法的实现部分

1 @implementation Person
2 @synthesize age;
3 @synthesize name;
4 
5 @end
1 //@synthesize 帮我们实现了 实例变量的get和set方法
2 @synthesize age;
3 /*
4 相当于:
5 -(void)setAge:(int)age{
6   self->age = age;
7 }
8 */

 

@property增强使用:

  在xcode4.4以后做的增强

  帮助我们生成get和set方法的声明

  帮助我们生成get和set方法的实现

 

 1 @interface Person : NSObject
 2 //@property 的增强
 3 //xcode4.4后  可以只使用@property 而不使用@synthesize
 4 //声明和实现了_age ,_name的get和set方法
 5 //操作的是带有下划线的实例变量
 6 //如果我们当前类,没有下划线的实例变量,则系统会帮我们生成。
 7 @property int age;
 8 @property NSString *name;
 9 
10 -(void)test;
11 @end

 

posted @ 2015-07-02 23:09  预估计  阅读(319)  评论(0编辑  收藏  举报