.m文件中声明变量有两种方式:
/// 第一种
@interface RTPerson () {
BOOL isRookieTomato;
}
/// 第二种
@interface RTPerson ()
@property (nonatomic,assign) BOOL isRookieTomato;
@end
区别:
第一种:
- 仅限于当前类种进行访问, 相当于增加了
@protected
; - 不受内存管理进行回收, 处于内存中全局数据区;
- 无法使用
setter
/getter
方法进行访问;
第二种:
- 可在当前类及其子类中进行访问, 相当于增加了
@private
; - 内存管理进行回收;
- 自动生成
setter
/getter
方法;
注意点: (并非严谨验证过,后续跟进)
当我们使用第一种方法进行声明的时候, 假如成员变量所在的ViewCtronller被销毁, 但该成员变量并不会一并被清理; 而使用属性声明的成员变量则会因为所有权修饰符的关系,在控制器dealloc的时候进行销毁;