(十分に書き取れていない!申し訳ない!!)
Swiftの設計はジェネリクスや第一級プロトコルなど言語の機能がアプリケーション開発のカギとなることを推進しています。しかし、Objective-Cから導入されたものを含む論理的パターンの多くは期待した通りには動作しません。多くの場合、Swiftの型システムは、プロパティをクラスとプロトコルの両方に拘束したりする素直なパターンとうまく動きません。この講演ではいくつかの課題に着目し、内部に潜む原因を議論し、対応策について考えます。
Swiftはまだまだ新しいものです。20年あったObjective-Cと比べれば若いものです。同じように扱おうと思っても全く違うものになります。
SwiftはObjective-Cと相性が良いといいましたが違いがあります。
asということば、いろいろなところに出てきます。橋渡しでチェックをする要求が出てきます。
as がウソを付くこともあります。CoreDataでやられました。Objective-C側からSwiftにブリッジする時機能しないのです。
そこで.map する必要があります
そして突然コンパイラエラーが出てきてObjective-Cでなければダメだというのが出てくる。
@objc があちこちで出てきてSwiftの機能が使えなくなっていきます。
SwiftからObjective-CにしてSwiftに戻したいことがありますが、出来ること出来ないことがあります。
ブリッジングはコンパイラレベルで行われます。シンプルなユースケースであればよいのですが、もっと先進的なSwift機能を使うと落とし穴がある。
enum や struct が利用できるのは限定的、Objective-Cの問題にぶつかる。
Objective-CからSwiftに移行させるのであればほんとうによく考えて効果があるか考える必要がある。
フレームワークはブリッジングヘッダに残っているとコンパイラエラーが発生します。
Objective-Cクラスを使う時自動で生成されるヘッダにそれがない場合は問題になる
ViewControllerをプロトコルに準拠させていきました
UIKit が変わらないという問題を抱えています。ViewControllerのProtocolがヘッダファイルに入っていない。
コンピューテッドプロパティを使う方法。これは強力。
Swiftはプロトコル言語。Swiftはオブジェクトをいろんなプロトコルで記述しています。
プロトコルエクステンションにはSuperというものがない。SwiftのクラスはSwift上でしかテストが出来ません。
プロトコルのパワーに加えてGenericsをサポートしています。
Genericsを使い始めて最初の課題はGeneric Protocolは宣言できない。
アイテムが有るということだけわかっています。 これは出来ません
共分散 GenericsとTypealiasの区別がつかない。
継承すると具体クラスになってしまう。
Genericsは一つのレベルだけ。
ネストはどうでしょう
トップレベルでないとだめです。
Generic クラスのテストを作る時NSObjectsでないものは上手くいかない。
Swiftは新しい素晴らしいパターンを提供してくれていますがやりたいことを殺るにはまだ色いろある。リミットが有ることを理解する必要がある。 このアドベンチャーに入っていくということを分かって進めてください。
protocol oriented 信仰の苦しみを語ってくれて頷かしい #tryswiftconf
— Taketo Sano (@taketo1024) 2016年3月2日
generics protocol はちょっと使いにくい感じはあるかもしれない #tryswiftconf
— 宇佐見 公輔 (@usamik26) 2016年3月2日
「Swiftへのスイッチで生まれる苦悩 プロトコルと『約束の地』 #tryswiftconf」をトゥギャりました。 https://t.co/PKIQy5hcc7
— トゥギャッター開発まとめ (@tg__dev) 2016年3月2日
気に入った記事は はてなブックマーク
はてなブックマークアプリiOS開発チームから来ました! はてなブックマークにはSwift特集があります! 良い記事を見逃さないように、ご利用ください! http://b.hatena.ne.jp/hotentry/it/Swift
そして良いまとめ記事があったらはてなブックマークでブックマークしましょう! try! Swift の記事で盛り上がると嬉しいです!