先定义一个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