ObjecTips

Swift & Objective-C で iOS とか macOS とか

Xcode 11 の変更点

気になるところだけざっくり

Xcode 11 Beta Release Notes | Apple Developer Documentation

New Features
  • SwiftUI(書くまでもなく)

  • Application Loader が Xcode に同梱されなくなった

Asset Catalog
  • Asset Catalog でキーボードショートカットでのコピペと複製が可能に
Core Data
  • 待ち望んでいた CloudKit 連携

別記事へ

koze.hatenablog.jp

Debugging
  • Environment overrides で Xcode での Debug の際にデバッグメニューから Dark Mode, Dynamic Type と Accessibility 関連の設定変更が可能になった

Accessibility Inspector を起動しなくても Xcode 上で素早くアクセスできる様になったのは便利。Environment overrides では目視ベースでの確認に留まりそうで、さらなるデバッグはこれまで通り Accessibility Inspector を別途起動して行う事ができる。

Deprecations
  • Quartz Composer framework の廃止

framework が deprecated になる事によって QuartzComposer.framework を利用したアプリの作成が将来的にできなくなる。
開発ツールとしての Quartz Composer.app が廃止になるわけではないのでQCアプリは引き続き Core Image のプロトタイピングツールとして利用可能。

Interface Builder
  • UITaleViewCell で Auto Layout を設定した時に、IB上でセルの高さが自動で調整される様になった。
  • IBで var translatesAutoresizingMaskIntoConstraints: Bool を設定可能。
  • IBで UIScrollView のコンテンツとその Auto Layout を設定した際にスクロールプレビューが可能。
  • watchOS への WKInterfaceTextField の追加
  • SF Symbols の追加

Introducing SF Symbols - WWDC 2019 - Videos - Apple Developer

  • IBSegueAction の追加

別記事へ

koze.hatenablog.jp

IB周りはかなり良くなった。

Localization
  • Asset Catalog をローカライズ可能に(アイコンファイル以外)
Project Navigator
  • 検索と置き換えで Asset Catalog のリネームを可能に
Signing and Distribution
  • iOS と macOS どちらにも使える Certificate が使える様に(これまでは iOS と macOS は別々の Certificate が必要だった)
Simulator
  • Simulator が Metal に対応。ただし macOS 10.15 で動かした時のみらしい。古いOSの場合はソフトウェアレンダーの OpenGL が使われる。
    Metal は Mac の GPU を使って動く。複数の GPU が利用可能な場合は使用する方を選択可能。
Source Editor
  • スペルチェック機能の追加
Known Issues
  • iOS Simulator で iCloud sync が使えない
  • iOS Simulator と Mac とのペーストボードの自動同期が使えない。メニューからマニュアルでペーストボードの操作を行う必要がある。
  • Swift 5.1 の新機能 Opaque Result Type some Protocol は Swift 5.1, iOS 13 が必要で古いOSでは利用できないが、コンパイラがこれを強制しない(エラーを出してくれない)ため古いアプリ向けでもビルド自体は通り、実際にアプリを実行して該当箇所を呼び出した時にクラッシュする。

シミュレータでの実行時エラーは以下だった

dyld: lazy symbol binding failed: Symbol not found: _swift_getOpaqueTypeMetadata
  Referenced from: /Users/<UserName>/Library/Developer/CoreSimulator/Devices/<DeviceUUID>/data/Containers/Bundle/Application/<AppUUID>/<BundleName>.app/<ExecutableName>
  Expected in: /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/Library/CoreSimulator/Profiles/Runtimes/iOS.simruntime/Contents/Resources/RuntimeRoot/usr/lib/swift/libswiftCore.dylib

What's New in Swift - WWDC 2019 - Videos - Apple Developer


とりあえず Xcode の変更点からのピックアップはこんなところ。
個人的には Core Data + CloudKit は最高のアップデートで、IBが色々と良くなっているのも嬉しい。
SwiftUI は iOS 13 以降必須になってしまうため、折を見てぼちぼちやっていく予定。