Edited at

Xcode8になっていろいろ変わったこと

More than 1 year has passed since last update.


概要

もはや恒例行事ですが、既存のアプリをXcode8に移行した際に発生した問題をつらつらとメモっておきます。

当面、随時更新される予定。


swift3.0

けっこう変わってますね。

まぁ、自動的にある程度置き換えてくれるのでさほど問題は出てません。

privateがfileprivateに置き換わったとか、publicが openになったとかetc...そういうのが中心。


openURL


swift3.0

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

今後追記していきます。

細かい変更が多い印象です。