@interface成员变量与属性

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

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

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

区别:

第一种:

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

第二种:

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

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

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

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容