DeNA × Sansan iOS Engineer Night
2015/10/22
http://connpass.com/event/21159/
遅ればせながらメモを投稿
Swift Class or Struct
Akifumi @DeNA
Classの問題点
- 暗黙の共有(参照型のため)
- 継承問題
- 型ロスト、ダウンキャストでロストする
Struct
Class:参照型
Struct:値型
StructでもProtocolを継承できる。
Swiftはプロトコル指向言語である。Classの問題点に悩まされずに済むので使ってみましょう。
iOS9 ショートカット
金子拓司 @Sansan
Home screen quick actions
ホーム画面で3D Touch使うと出てくる
Static quick actions
- ユーザーの状態に依存しないアクション
- インストールすると使える
- 固定のアクション
Dynamic quick actions
- ユーザーの状態に依存するアクション
- 起動しないと使えない
- 起動しないと更新されない
- version info をplistに保存しておくとよい
Search API
- Spotlight API
- 検索indexにデータを追加する
CSSearchableItemとか - Spotlightからのアプリの起動
ショートカット作り過ぎると
- UIApplicationDelegateが肥大化する
- リファクタリングする
- 目的の画面に至るまでに、複雑な画面遷移が必要になる。
- Modalで画面を出しても支障ないのなら、そうする。
Xcode7 Tips
Koji @DeNA
Storyboard Reference
複数人で触るとコンフリクトする悩みから解放
Editor -> Refactor Storyboard
UIStackView
AutoLayoutの制約を何個も使わなくていいから楽。
左から右にStackViewを積む
ExtraView
UI Test
- テストコードをswiftで書ける
- シュミレーターでの動作を記録して、テストコードを生成してくれる
Swift
playgroundでライブコーディング
try catch
- try? try!
- type safe
- guard
if文をスッキリ書き換えられる - デフォルト引数の補完がよくなった
Bundle Identifier
Build Settingsに追加された。Debugとか構成ごとに自在に変えられるので便利。
iOS Refactoring
Sansan @kazu0620
Anti Pattern
- 命名が悪い. btn
- マジックナンバー
enum使おう - CGRectMakeFrame
動的なviewでもstoryboard、Auto Layout で意外といける - modeが大すぎ、8個? 過剰な分岐が必要になる
- クラスの名前が抽象的。責務を限定して、分かりやすい名前にする。
Fat ViewController
- 行数が多すぎ
- Modelで切り出す
- Viewで切り出す
- チュートリアルやガイダンスの状態管理を別のモデルクラスで切り出す
- 複数のmodelを書き換える。serviceクラスを使う
AppDelegateの肥大化
NSNotificationは各View Controllerで
Fat Storyboard
Notification, Delegate, KeyObserver
通知元と通知先の関係を考える.
1対1か、1対N か
悪いコードを放置しない
- ボーイスカウトルール