OC中关于成员变量与属性的理解

2019-08-02  本文已影响0人  山有木枝壮
最近重新接触OC,对于OC中成员变量和属性的理解和使用存在一些问题,理出来记录下

q、成员变量、实例变量、属性

对照下面的例子就能够清晰的理解

接口文件

@interface Person : NSObject
{
    NSInteger age;              // 成员变量
    NSString *name;             // 实例变量,(是一个类的对象,自定义类也是)
    
    NSString *_detail;          // 重写属性detail的getter和setter不会自动生成_detail实例变量,需要手动添加
}

// age属性,会自动生成_age的成员变量和getter、setter方法
@property (nonatomic, assign) int height;

// detail属性,如果重写getter和setter方法,不会再自动生成_detail实例
@property (nonatomic, strong) NSString *detail;

@end

实现文件

@implementation Person

- (NSString *)detail {
    return _detail;
}

- (void)setDetail:(NSString *)detail {
    // 不能使用self.detail = detail。在oc中=左边的点代表设置方法,会循环调用自己
    // 使用属性自动生成的变量,可以使用self->_detail,或者self->_height
    _detail = detail;
//    self.detail = detail;     // 错误写法
}

@end

上一篇 下一篇

猜你喜欢

热点阅读