概要
もはや恒例行事ですが、既存のアプリをXcode8に移行した際に発生した問題をつらつらとメモっておきます。
当面、随時更新される予定。
swift3.0
けっこう変わってますね。
まぁ、自動的にある程度置き換えてくれるのでさほど問題は出てません。
privateがfileprivateに置き換わったとか、publicが openになったとかetc...そういうのが中心。
openURL
UIApplication.shared.open(url, options: [:], completionHandler: nil)
[[UIApplication sharedApplication] openURL:url
options:@{}
completionHandler:nil];
Framework
これの変更が多分今後の更新の中心になりそうです。
UIActivityType
UIActivityのactivityTypeがStringからUIActivityTypeに変更になりました。
- override func activityType() -> String? {
- return "XXXX"
+ override var activityType : UIActivityType {
+ return UIActivityType(rawValue: "XXXX")
}
こんな感じに置き換える。
よく見ると、メソッドではなくてプロパティみたいになってますね。
追跡型広告の制限
仕事関係だと、今回一番影響が大きい。
オプトアウトした端末だとiOS10で広告ID(IDFA)が0を返してくるので、サードパーティ製の広告モジュール(TapJoyとか)を組み込んでいるとそれが原因でクラッシュすることも。
とはいえ、大概のメーカーで問題を認識してて対応が完了してるのでアップデートすれば、問題ない。
(問題はそのアップデートの際に、元のモジュールの世代があまりにも古くて大幅なコードの更新が必要になったりすることとかね。まめに更新にやっておかないと、他のモジュールのアップデートなんかもあったりして地獄になったりする)
謎
UIActivityControllerで"Add to iCloud drive"を非表示にしたいのですが、まだ方法わかってないんですよね。
Forumにも同じ質問がアップされてますが・・・
https://forums.developer.apple.com/thread/54183
今後追記していきます。
細かい変更が多い印象です。