DeNA × Sansan iOS Engineer night に行ってきた
遅ればせながらアップ
#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にデータを追加する
CSSearchaleItemとか
- 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
BuildSettingsに追加された。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 か
### 悪いコードを放置しない
- ボーイスカウトルール