Objective-C中的点语法
重点:在oc中,person.age代表的不是访问成员变量,而是调用对象的set方法或者get方法,因此,最好是在声明成员变量时加上下划线予以区分(int _age)。个人理解是在C++或者Java中访问成员变量也是分为获取该成员变量值和对其进行赋值两类,其本质也就是get方法和set方法,因此原理上是相通的。
一个简单的Person类的声明
@interface Person:NSObject {
int age;
int num;
}
- (void)setAge:(int)newAge;//注意,该方法的方法名为:setAge:
- (int)age;//在oc中,习惯上get方法名就是成员变量名
- (void)setAge:(int)newAge andNum:(int)newNum;//该方法的方法名为:setAge:andNum:
- (int)num;
@end
Person类实现
@implementation Person
- (int)age {
return age;
//return self.age会循环调用get方法
}
- (void)setAge:(int)newAge {
age = newAge;
//self.age = newAge会导致一直循环调用set方法
}
- (int)num {
return num;
}
- (void)setAge:(int)newAge andNum:(int)newNum {
age = newAge;
num = newNum;
}
@end
注意:
person.age = 10;//这里调用的是set语句,等效于[person setAge];
int age = person.age;//这里调用的是get语句,等效于[person age];
因此,实际的开发中,Person类的声明最好是:
@interface Person:NSObject {
int _age;
int _num;
}
- (int)age;
- (void)setAge:(int)age;//这里的参数名称也可以直接写成age,而不用担心和成员变量名重复的问题了
- (int)num;
- (void)setAge:(int)age andNun:(int)num;
@end