Swift実践入門を読んだメモ
ようやく目を通すことができたので、メモを残しておきます。
![]() |
ページ | メモ |
---|---|
p. 4 | max(_:_:) という関数名の書き方すぐ忘れるので覚えておこう |
p. 36 | CGFloat型はFloat型のエイリアス?CLLocationDegreesはpublic typealias CLLocationDegrees = Double になってたけど、CGFloatはpublic struct CGFloat { で定義されてるので違いそう。 |
p. 88 | switchのdefaultはenumのcaseを増やした時に実装漏れの可能性などがあるので、できるだけ使わない。 |
p. 91 | for case知らなかった |
p. 100 | ~= 知らなかった |
p. 103 | is忘れがち |
p. 108 | @discardableResult 知らなかった |
p. 118 | () -> () じゃなく() -> Void と書く # TODO |
p. 119 | doでスコープ作る(catchと組み合わせなくても使える) |
p. 123 | @autoclosure の説明わかりやすい。or(lhs(), rhs()) でrhsがclosureになってないとlhsがtrueでもrhsが実行されちゃう。それを自動で。 |
p. 155 | UIAlertControllerに独自エラー渡すの便利そう。 |
p. 156 | Prefixつけるより、型をネストする # TODO |
p. 168 | メンバーワイズイニシャライザっていうのか、Structに自動定義されるやつ。 |
p. 176 | サブクラスで変更する→クラスプロパティ・メソッド、変更しない→スタティックプロパティ・メソッド |
p. 252 | クラスを利用すべき時:参照を共通(Targetを登録して通知を受ける)、ライフサイクルに合わせた処理(deinitでファイル破棄) |
p. 258 | 継承を利用すべき時:ストアドプロパティを複数の型で共有 |
p. 264 | ImplicitlyUnwrappedOptionalの使いどころ:最初nilが入るけどそれ以降は絶対入らない(Optionalだとnilが入ってくる仕様に誤解される)、サブクラスの初期化より前に親クラスを初期化したい |
p. 268 | 不正な状態でもできるだけ動いてほしいならOptional |
p. 275 | delegateを使うべき時:多数のイベント通知がある |
p. 282 | weakとunowned。nilにならないならunownedでいい。nilにならない仕様を明確化できる。でも結局weakの方が安全か。# TODO |
p. 284 | escapingなクロージャはself必須、循環参照に気づきやすいメリットある |
p. 285 | クロージャを使うべき時:処理の実行とコールバックを同じ場所に書きたい |
p. 289 | オブサーバを使うべき時:1対多の通知 |
p. 306 | Threadを使うべき時:特になしw |
p. 313 | エラー処理にOptionalを使うべき時:値の有無だけで十分 |
p. 316 | エラー処理にResultを使うべき時:エラーの詳細を知りたい、成功か失敗いずれかを保証、非同期処理 |
p. 319 | case error(String) じゃなくcase error(reason: String) わかりやすい # TODO |
p. 322 | rethrows知らなかった |
p. 343 | アサーションはデバッグの時だけ。fatalErrorはReleaseでも落ちる。 |
p. 396 | Objective-Cの新機能(ライトウェイトジェネリクス、null許容性アノテーションなど) |
1つ1つの章がコンパクトにまとまっていて読みやすかったです。 まだあまり手は動かせてないので、今あるコードに適用できそうなところは取り入れて行きたいと思います。(# TODOつけたところなど)