以下のコメント欄でいろいろ議論されています
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のバージョン上がったら使えなくなったりしないよね?