.m文件中聲明變量有兩種方式:
/// 第一種
@interface RTPerson () {
BOOL isRookieTomato;
}
/// 第二種
@interface RTPerson ()
@property (nonatomic,assign) BOOL isRookieTomato;
@end
區(qū)別:
第一種:
- 僅限于當(dāng)前類種進(jìn)行訪問, 相當(dāng)于增加了
@protected; - 不受內(nèi)存管理進(jìn)行回收, 處于內(nèi)存中全局?jǐn)?shù)據(jù)區(qū);
- 無法使用
setter/getter方法進(jìn)行訪問;
第二種:
- 可在當(dāng)前類及其子類中進(jìn)行訪問, 相當(dāng)于增加了
@private; - 內(nèi)存管理進(jìn)行回收;
- 自動生成
setter/getter方法;
注意點: (并非嚴(yán)謹(jǐn)驗證過,后續(xù)跟進(jìn))
當(dāng)我們使用第一種方法進(jìn)行聲明的時候, 假如成員變量所在的ViewCtronller被銷毀, 但該成員變量并不會一并被清理; 而使用屬性聲明的成員變量則會因為所有權(quán)修飾符的關(guān)系,在控制器dealloc的時候進(jìn)行銷毀;