标签:
1.最基础的set 和 get
准备工作
Person.h
@interface Person : NSObject
{
NSString *_hobby; // ObjC建议成员变量带"_"
@protected // 受保护的 本类以及子类可以访问
NSString *_name;
NSString *_gender;
@private // 私有的 只有本类可以访问
NSInteger _age;
NSInteger _weight;
}
#pragma mark --- 声明setter getter方法 ---
// setter
- (void)setName:(NSString *)name;// name将形参传给成员变量
// getter
- (NSString *)name; //也可以写成 - (NSString *)getName;
// 对于实例变量,只有写了setter和getter方法,才能对它赋值,取值(KVC,runtime 除外) ,
person.m
@implementation Person
// setter (设置器) 赋值
- (void)setName:(NSString *)name{
_name = name;
}
参数:(NSString *)name,是传过来的一个参数,可以是per.name = @"nihao";中的@"nihao",也可以是[per setName:@"nihao"];(消息发送机制)中的@"nihao"
_name = name; setter方法的本质就是将传过来的值赋给实例变量,只是赋值
// getter (访问器) 取值
- (NSString *)name{
return _name;
}
return _name; getter方法的本质就是取值(访问实例变量)的时候,我们的per.name 就是 _name;就是上面setter传过来的值,可以取值了.
总结:在一般的setter,getter方法中,setter是赋值操作,只有写了setter方法,才能写出赋值,per.name = @"**";
getter是取值方法,我们想知道per.name是什么,就要写getter方法.
如果值写了setter未写getter,就会只能赋值,不能取值.即无法打印per.name的值
如果值写了getter未写setter,就会只能取值,不能赋值.此时如果不用其他方法赋值,那么per.name = nil;
标签:
原文地址:http://www.cnblogs.com/blogofgsl/p/5107411.html