現在在看別人的代碼 發現他們都把h文件的內容寫到m文件裡
比如:
@interface MyTreeViewController ()
{
NSArray *tree;
}
@end
@implementation MyTreeViewController
- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
{
self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
if (self) {
// Custom initialization
}
return self;
}
為什麼要這麼做?為什麼不直接在頭文件裡寫
@property(strong,nonatomic)NSArray *tree;
??
@interface MyTreeViewController () 是一個特殊分類,叫做 匿名分類。顧名思義,它沒有分類名
在匿名分類中可以聲明變量,這些變量都默認是@private私有變量,即使放在.h中仍然如此。
之所以放在.m中,是因為這是常見寫法,一些不希望外部訪問的@property、方法、變量,都可以使用分類的形式聲明在.m中,這樣就可以屏蔽外部訪問。
具體可以參考 變量聲明的不同形式,作用域等