首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計綜合問答

iOS 匿名分類在 .m 中聲明私有屬性:封裝內部狀態的慣用模式

     編輯:程式設計綜合問答

代碼模式


// MyTreeViewController.m
@interface MyTreeViewController () // 匿名分類
{
    NSArray *tree; // 實例變數,默認 @private
}
@property (nonatomic, strong) NSArray *tree; // 也可用屬性
@end

@implementation MyTreeViewController
// 實現...
@end

為何放在 .m

  • 隱藏實現細節:外部引入 .h 看不到 tree,無法直接存取,強制封裝。
  • 避免污染公共介面:.h 僅公開必要 API,內部狀態、私有方法、Delegate 協議一致性均可在匿名分類中聲明。
  • 編譯期可見性:同一文件內可見,跨文件不可見,優於 @private(仍可通過 KVC 存取)。

對比 .h 中 @property

.h 中 @property 為公開屬性,任何引入者均可存取;.m 中匿名分類屬性實為私有,配合 @synthesize 或自動合成生成存取器,僅內部使用。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved