在 NSHipster 看到 Clang 有支援 GCC 的擴充功能:Code Block Evaluation,看到後覺得真是驚為天人(又在亂用成語了XD),這個功能真是太實用了,立馬就在正在寫的專案裡用了這種寫法 😀
這個功能是用圓括弧()包起一個代碼區塊{},然後這個代碼區塊最後一個表達式的值就是返回的值,寫法就像這樣:
self.nameLabel = ({
UILabel *label = [UILabel alloc] initWithFrame:CGRectMake(10, 10, 100, 44)];
label.text = @"Riddle";
label.textColor = [UIColor greenColor];
label;
});
self.blogLabel = ({
UILabel *label = [[UILabel alloc] initWithFrame:CGRectMake(10, 50, 300, 40)];
label.text = @"http://riddleapple.logdown.com";
label.textColor = [UIColor redColor];
label;
});
因為變數只能存活在宣告那個變數的大括號內,因此可以利用這個方式,重複使用一些通用的變數名稱而不會產生衝突!