@interface成员变量与属性

.m文件中声明变量有两种方式:

/// 第一种
@interface RTPerson () {
    BOOL isRookieTomato;
}

/// 第二种 
@interface RTPerson () 
@property (nonatomic,assign) BOOL isRookieTomato;
@end

区别:

第一种:

  • 仅限于当前类种进行访问, 相当于增加了@protected;
  • 不受内存管理进行回收, 处于内存中全局数据区;
  • 无法使用setter/getter方法进行访问;

第二种:

  • 可在当前类及其子类中进行访问, 相当于增加了@private;
  • 内存管理进行回收;
  • 自动生成setter/getter方法;

注意点: (并非严谨验证过,后续跟进)

当我们使用第一种方法进行声明的时候, 假如成员变量所在的ViewCtronller被销毁, 但该成员变量并不会一并被清理; 而使用属性声明的成员变量则会因为所有权修饰符的关系,在控制器dealloc的时候进行销毁;

你可能感兴趣的:(@interface成员变量与属性)