OC 自定义 get/set 方法注意点

    今天碰到一个基础问题,须要自定义set方法,原本挺顺利的,定义一个属性xcode

.h文件
@property (nonatomic, strong) NSString *name

.m文件
- (void)setName:(NSString*)name
{
    _name = name;
}

    上面这么写你们应该都能理解,即自定义set方法的标准写法。后来属性的名称改了一下,忘记了改set方法,致使设置属性时走不到自定义方法中,搞了半天,终于找到问题,我想说的不是这个,这个只是原由,要说的是解决问题过程当中碰到的一个问题:同时使用自定义 get/set 方法的注意点。ide

    或许你认为,这还不简单,以下:
atom

.h文件
@property (nonatomic, strong) NSString *name

.m文件
- (void)setName:(NSString*)name
{
    _name = name;
}
- (NSString*)name
{
    return _name
}

    但实际上,xcode7.2给出了以下错误:code

/Users/zoubon/testproject/testpro/testpro/testProperty.m:21:5: Use of undeclared identifier '_name'; did you mean 'name'?

    找不到标识符_name,奇怪,_name不就是属性name的别名吗?get

    确实是,在自定义单独的一个get或set方法时,上面的写法没有问题,但两个同时存在时,就错了,缘由暂不深究,就说解决方法吧,一个久远的关键字:@synthesize编译器

@synthesize first = _first

    好久之前@synthesize就不用了,编译器自动生成属性的get/set方法,想不到同时自定义时,派上了用场,先写到这里吧,或许还有一些缘由或方法我没有想到,后面再补充吧编译

相关文章
相关标签/搜索