以下のコメント欄でいろいろ議論されています
http://qiita.com/codelynx/items/f0243d631f2448e89026
/** 一つのテキストフィールドを持つシンプルなUI部品 */
class CustomView: UIView {
@IBOutlet weak textField: UITextField!
/* fatal error: unexpectedly found nil while unwrapping an Optional value が発生する。
というかまだこの時点ではtextFieldはnilになっている
init() {
super.init(frame: CGRectZero)
textField.text = "init value"
}
required init(coder aDecoder: NSCoder) {
super.init(coder: aDecoder)!
textField.text = "init value"
}
*/
/** 初回のみ呼ばれる 初期化処理 */
private lazy var initialize: (()->())? = {
textField.text = "init value"
// initializeを無効化
self.initialize = nil
}
override func layoutSubviews() {
super.layoutSubviews()
initialize?()
}
}
self.initialize = nil が個人的には初見で一番わかりやすいかなあ?
最終案のreturn {} と return nil はObjective-C から来て初めて見る場合とかだと厳しい気がする
Swiftのバージョン上がったら使えなくなったりしないよね?