我設置了一個自定義UIButton,並且只需要將一堆視圖添加爲子視圖一次。 爲了保持我的實現文件苗條,並且避免設置initWithFrame:
中的所有視圖,只讓某人執行類似button = [[Button alloc] init]; button.frame = someFrame;
的操作,我正在執行以下操作;在layoutSubviews中使用dispatch_once有什麼問題嗎?
- (void)layoutSubviews
{
static dispatch_once_t onceToken;
dispatch_once(&onceToken, ^{
[self setupViews];
});
}
- (void)setupViews
{
// add all subviews here
}
這一切看起來都很好,我只是想知道我是否正在做一些不被推薦的事情? 爲了進一步擴展這個問題,有沒有將dispatch_once
放在一個不斷被調用的方法中是安全的? (例如,在viewDidAppear
內查看設置代碼)。
爲什麼不使用'viewDidLoad'來設置這個設置? – bdesham
你有多少個實例? – Wain
@bdesham,不能使用viewDidLoad,因爲它是一個子類UIButton。 – Sid