Xcode 公開ノート
テクニカルサポートおよび学習リソース
Apple は、Xcode を使用しての開発をサポートするために、以下の Web リソースを提供します。
- フォーラム。アップルデベロッパフォーラムは、iOS の開発、OS X の開発、Safari や Web 開発、および開発者ツールを使用するためのセクションを含んでいます。フォーラムの議論には、 devforums.apple.com を訪れて下さい。
- バグの報告や機能追加の要求。 バグの報告は、Apple に問題、改善要求、およびフィードバックができます。システムおよび開発者向けツールのバージョン情報、および関連するクラッシュログまたはコンソールメッセージなどを含む、問題に関する詳細な情報を含みます。bugreport.apple.com でバグの報告(Bug Reporter) を使用してください。
- アップルのデベロッパー向けウェブサイト。 アップルのデベロッパー向けウェブサイトは、公式に最新の Xcode の技術的マニュアルー iOS、OS X、および Safari の開発情報の主要なソースです。 developer.apple.com で Apple デベロッパー向けウェブサイトをご覧ください。
- Xcode のホームページ。 Xcode のホームページは、現在の、およびベータリリースのダウンロードリンクを迅速にアクセスして、Xcode の最新リリースに関するハイレベルな情報を提供します。developer.apple.com/xcode で Xcodeのホームページを参照してください。
Xcode のチームにフィードバックを提供するには、xcode-feedback@group.apple.com にメールを送信してください。
Xcode 7.1 のリリースノート
新機能
プレイグラウンド
- プレイグラウンドは、オブジェクトリテラルを作成するために、直接エディタにファイル、イメージ、および色をドラッグするのをサポートしています。
- XCPlayground によって公開された API が大幅に改訂されました。グローバル関数を集める代わりに、Xcode は Xcode と現在のプレイグラウンドページと対話するためのメソッドを持つ XCPlaygroundPage クラスを今や公開します。
- 現在のページへの参照を取得するために XCPlaygroundPage.currentPage を使用します。
- タイムラインの項目に値を取り込むためには XCPlaygroundPage.captureValue(_:withIdentifier:) を使用します。
- プレイグラウンドページは無期限に実行することを目的にした非同期コードを含むことを Xcode に示すために XCPlaygroundPage.needsIndefiniteExecution を設定します。
- プレイグラウンドページのライブビューを提示するため Xcode に伝えるために XCPlaygroundPage.liveView を設定します。
- XCPlayground はプレイグラウンドページのライブビューとしてビューコントローラを提示するサポートをしています。
- プレイグラウンドがプログラム XCPlaygroundPage.currentPage.finishExecution() を呼び出すことで実行を停止できます。
オブジェクトリテラルを使用すると、より表現豊かなプレイグラウンドの文書を可能にし、プレイグラウンド内のファイル、画像、色の視覚的表現を含めることができます。リテラルは、そのプレーンなコードの対応と同様に振る舞いますが、Xcode のエディタでは特別にレンダリングされます。(22099316)
XCPlaygroundPage は、以下の機能を公開します。
XCPlaygroundSharedDataDirectoryURL は、新しいグローバル定数として定義されています。それは NSURL として共有プレイグラウンドデータディレクトリを公開します。
この API の変更の一環として、XCPCaptureValue、XCPShowView、XCPSetExecutionShouldContinueIndefinitely、XCPExecutionShouldContinueIndefinitely、 および XCPSharedDataDirectoryPath は旧式となりました。それらは、Xcode の将来のバージョンで削除される場合があります。(20783204)
この機能を使用するには、XCPlaygroundPage.liveView をあなたのビューコントローラの選択に設定して下さい。利用可能な場合、ビューコントローラが好まれるはずですが、プレーンビューはまだプレイグラウンドページのライブビューとして使用することができます。
プレイグラウンドの作成者は、オブジェクトまたは値がそのライブビュー表示として使用されるべきであるビューまたはビューコントローラを返すことができる XCPlaygroundLiveViewable プロトコルに準拠することによりプレイグラウンドページのライブビューとして提示することができるカスタム・タイプを作成できます。(20783161)
このメソッドは、現在のプレイグラウンドページの実行を停止するように Xcode に指示します。それは、Xcode が直接終了できないような方法で適切に終了するためにクリーンアップできます。(22463694)
Interface Builder
- 破線の制約は、1000 よりも優先度が低いを示します (15990914)
- Interface Builder は segue で Peek と Pop を有効にするようサポートしています。
iOS 9.1 より前のバージョンの OS で動作しているときに Peek と Pop による segues は省略されています。(22886994)
テスト
- UI テストは tvOS 用アプリに利用可能です。
tvOS が提供するユニークな対話モデルをサポートするために、XCTest は、Apple Remote が使用されたかのように、アプリとの相互作用を可能にする新しい XCUIRemote クラスを含みます。さらに、新しい XCUIElement.hasFocus プロパティは、要素のフォーカス状態をチェックするために使用でき、XCUIElementQuery がフォーカスを持つ要素を見つけることが tvOS で述べられたこの hasFocus プロパティを使用することもできます。
tvOS 上の UI テストを記録しながら、 Siri Remote(遠隔操作をしたSiri) 上のスワイプジェスチャーは、Apple Remote で同等のボタンが押されたと同じように記録されます。
シミュレータでキーボードを使用してのナビゲーションは、Apple Remote で同等のボタンが押されたと同じように記録されます。矢印キーは、矢印ボタンにマッピングされ、Return キーは選択ボタンにマッピングされ、エスケープキーは、メニューボタンにマップされ、スペースバーは、再生/一時停止ボタンにマップされます。(21548564)
デバッグ
- 住所清浄化は、 watchOS アプリをサポートしています。(22540994)
- Swift エラーブレークポイントがサポートされています。
エラーが throw されると Swift エラーブレークポイントは、実行を一時停止します。その実行は、指定の Swift エラータイプによってのみ一時停止するように、Swift エラーブレークポイントを編集できます。(21080569)
クラッシュレポート
- Xcode は、クラッシュオーガナイザーで WatchKit 2 拡張機能から生じるクラッシュレポートを表示できます。(20139117)
- OS X アプリの拡張機能のためのクラッシュログは、クラッシュオーガナイザーに表示されます。(22224732)
Swift
- C からインポートした列挙型は、自動的に == 演算子のデフォルトの実装を含む、Equatable プロトコルに準拠しています。
- NSNumberunsignedIntegerValue プロパティは、今や Int の代わりに UInt 型を持っており、Objective-C で NSUInteger 型を使用する他のメソッドやプロパティと同じように、その名前は "unsigined.. " を含んでいる。
- フィールドゲッターとセッターは今や、C からインポートされた union という名前のものに作成され、フィールドの名前の付いたパラメータを持つイニシャライザが提供されます。 たとえば、次の Objective-C の typdef を与えられたとします:
- C 構造体のビットフィールドメンバは、今や Swift にインポートされるようになりました。(21702107)
- dispatch_block_t は今や、@convention(block) () -> Void 型を参照し、Swift 1.2 と同じです。
- 編集したのが private のマークが付いて就職された宣言だけだった場合、ファイルを編集しても、それに依存するファイルの再コンパイルはトリガしません。(22239821)
- 文字列内の補間式は今や、文字列リテラルがを含んでいてもいいです。
- その制約システムを解決することはできない型チェッカーは、多くの場合、改善し続けようとすると、エラーメッセージが生成します。
- 関数型間の変換は、サポートされ、関数のパラメータの型内の反変性と関数結果の型の共分散と反変性を示します。
この適合性は、追加のコード無しで switch 文でに一致する C 列挙型パターンを使用することを許可します。(17287720)
Xcode 7 でのように、システムフレームワークにおける NSUInteger の他のほとんどの使用は int としてインポートされます。(19134055)
typedef union IntOrFloat { int intField; float floatField; } IntOrFloat;
Swift にこの Swift をインポートすると、次のインタフェースを生成します。
struct IntOrFloat { var intField: Int { get set } init(intField: Int) var floatField: Float { get set } init(floatField: Float) }
(19660119)
この変更は、Swift 2.0 と Xcode 7.0 で表面化した問題を解決する、予想通りの dispatch_block_create を使用するプログラムが動作するようになります。
(22432170)
例えば、"My name is \(attributes["name"]!)" は今や有効な表現です。(14050788)
例えば、汎用クロージャの本体内のエラー (たとえば、マップへの引数のクロージャ) は、はるかに便利に診断されます。(18835890)
例えば、 Any -> Int 型 の関数を、String -> Any 型の変数に、割り当てることは文法に合っています。(19517003)
解決済みの問題
以前の Xcode のリリースノートに記載された以下の問題が解決されました。
Interface Builder
- [エディタ(Editor)] > [キャンバス(Canvas)] > "曖昧に固有のサイズの制約が貢献する" が Interface Builder のキャンバスに自動レイアウトを使用して、選択したビューのコンテンツの優先順位であいまいさがある場合に正しく動作するように修正しました。(19689060)
- 制約は、それらの関係や比率を示すためにバッジを示します。(15991257)
- Interface Builder で UIStackView に設定された明示的なレイアウトの余白が正しく実行時に反映されるようになりました。(21613035)
ビルド
- あなたの iOS アプリが watchOS アプリを埋め込みしており、各アプリに埋め込まれた iOS と watchOS 両方のためのフレームワークを持っていた場合、あなたのプロジェクトは、アーカイブのアクションを実行したときにビルドを失敗していたのを修正しました。(22183332)
デバッグ
- ビュー階層のデバッグ時、選択された制約の視認性が向上しました。(22092490)
一般
- Xcode か、シミュレータを使う他のツールを起動する時、もはや追加の Apple ウォッチデバイスは作成されません。(22508374)
Swift
- as パターンを持つ複数の型の switch は、もはやメモリリークを起こしません。(22587077)
既知の問題点
アセットカタログ
- watchOS 2.0 とアセットカタログをビルドする場合、いくつかのユニバーサルのアセットは、コンパイルされたアセットカタログに表示されない場合があります。
watchOS 2.0 のためのユニバーサルアセットが「2x」または「任意の」スケール表現を含んでいることを確認して下さい。(22867369)
リンカ
- ビットコードと、-exported_symbol または -exported_symbols_list と共に ld-r(Xcode の単一のオブジェクトのプレリンク) を使用する場合、単一のオブジェクトのプレリンクは成功しますが、プレリンクオブジェクトに対してリンクする際、リンカは、その後アサートします。
ビットコードと単一のオブジェクトのプレリンクを使用して静的ライブラリをビルドする場合は、リンクコマンドにエクスポートされたシンボルフラグを追加しないでください。サードパーティのライブラリをリンクするときに、現在のリンカーアサーションがある場合は、ビットコードを無効にするか、ライブラリプロバイダから新しいライブラリを求めることができます。(22897234)
シミュレータ
- tvOS シミュレータと共にシリのリモコンを使用するには、Apple TV からそれを最初に登録解除する必要があります。
- シリのリモコンまたはゲームコントローラをペア解除する時、Simulator.app が応答しなくなることがあります。
- シミュレータで実行している場合、アプリは Mac のローカル IP アドレスを経由して Mac でホストされている TCP / IP サービスとローカルに通信できません。
- ユーザーの請求先住所を要求する場合はシミュレータで Apple ペイを使用してシミュレートされた処理は完了しません。(22551685)
- フルサポートの場合は、tvOS シミュレータ実行環境は、OS X の OS X v10.11 エルキャピタンの最終リリースまたは新しいバージョンが必要です。
- Xcode.app は、デバイスが最初に起動したときとは異なるパスにある場合、iOS 9.0 シミュレータは黒いスクリーンで起動することがあります。
- Xcode のダウンロード設定パネルから1つ以上のシミュレータをダウンロードするときは、最初のダウンロードの開始時に管理者の承認のためのプロンプトが表示されます。また、各ダウンロードの終了時に、再び管理者の承認のために要求されることがあります。これらのすべてのプロンプトへの応答が正常に選択された時、選択されたシミュレータをインストールされます。(22993731)
Apple TV からのシリのリモコンを登録解除するには、Apple TV からリモコンを数メートル離し、MENU と + を同時に押し、保持し、2秒間押したままにします。シリが、リモコンをすぐに Apple TV とペアにした場合、さらに離れて移動して、再試行してください。(22908351)
Simulator.app を強制終了して再起動して下さい。(22891830)
そのような localhost または 127.0.0.1 のように、ループバックアドレスを経由して接続して下さい。(22453539)
実行時間強は、限られた機能を備えた OS X ヨセミテ 10.10.5 でサポートされています。OS X ヨセミテで実行すると、tvOS シミュレータ実行環境と Apple TV のリモコンをペアリングできません。(19070665)
シミュレーターメニューから、シミュレートされたデバイスの内容と設定をリセットして下さい。(22697818)
テスト
- tvOS の UI テストを記録する場合、メニューボタンを押すと、UI テストメソッド内の重複するコードを生成することがあります。(22850293)
- UI テストは、ユニットテストで実行すると、Apple TV のシミュレータで起動に失敗します。
ユニットテストとは別に、独自のスキームを使用して、UI テストを実行して下さい。(23079718)
デバッグ
- [通知(Notification)] タブが選択されたときに iPad Pro で実行中の今日の拡張子にに Xcode のデバッガは自動的に添付しません。
- Apple TV のアプリケーションからデバッガを外すと、アプリは出力をログに記録したときにハングアップします。(22493459)
- CGRect や CGPoint のような、C 言語の構造体の型から Swift にインポートされた Swift のデータ型は、デバッガで検査することはできません。(23088739)
[今日(Today)] タブを選択し、デバッグのため今日の拡張子を起動して下さい。(22495840)
クラッシュレポート
- アプリの機能拡張のクラッシュログは、TestFlight を介して配布されたビルドでは使用できません。(22661518)
Xcode サーバー
- Xcode サーバーはバージョン 4.1.5 以外の OS X サーバのバージョンで新開発チームに参加することはできないかもしれません。
既存のチームのメンバーシップは正常に動作し続けます。(22539804)
一般
- 「起動を待機中」を実行スキームのアクションで使用する場合は、Xcode は、「添付するのを待機中」の代わりに、プロセスが起動するのを待っているにもかかわらず、アクティビティモニタで「実行中」と表示します。あなたが待機中のプロセスを起動せず、「自動的に起動」に切り替えていない場合は、Xcode は期待どおりに起動した後、このような状況が発生するたびに、アプリに添付することを失敗します。(22753642)
- デバイス・ウィンドウは、時々間違ったデバイスと一緒にペアリングした時計の詳細を表示します。(22908731)
- Watch フレームワークと静的ライブラリのターゲットは、プロジェクトエディタの[全般(General)] タブがありません。
- 無料のプロビジョニングチームで署名したアプリを実行すると、起動に失敗することがあります。
- 無料のプロビジョニングチームで署名したアプリは tvOS デバイス上で実行できないことがあります。(22636412)
- Finder が誤って Xcode が損傷しており、ゴミ箱に移動する必要がある旨警告を与えることがあります。
- ゲームセンターやアプリ内購入などのような一部の機能には、プロジェクトナビゲータの機能ペインで有効にはできません。
- OS X プロジェクトをビルドした後、いくつかの折り返しや、複数行に亘るテキストフィールドは、実行中のアプリで間違ってレイアウトされるかもしれません。
必要に応じて、ターゲットの Info.plist ファイルまたは[ビルド設定] タブを使用して手動で設定を行います。(22932248)
デバイスの[設定] つまり、[設定(Setting)] > [一般(General)] > [プロファイルとデバイス管理(Profile & Device Management)] の開発者証明書を信頼します。(19748857)
お使いの Mac を再起動して下さい。警告が再起動後に解決しない場合は、Xcode を再インストールして下さい。(22686310)
その他の機能を有効にする能力を復元するために、iCloud の機能を有効にし、その後無効にして下さい。(22964531)
折り返し、複数行のテキストフィールドを含むストーリーボードまたは XIB を開き、またはテキストフィールドを選択したり、サイズインスペクタを開き、明示的に適切な幅を変更します。(23052169)
公開ノート更新
リリースが配布された後、Xcode 公開ノート は時々更新されます。Apple デベロッパーのウェブサイト https://developer.apple.com/library/etc/redirect/xcode/release_notes. で Xcodeリリースノート の最新バージョンを確認できます。
公開ノート履歴
リリースノートは、累積の歴史です。既知の問題は、それらが最初に発見されたリリースのセクションに記載され、以降のリリースのセクションでは繰り返されません。既知の問題が解決されると、それらは、解決が実装された後のリリースのセクションに記載されます。主要な Xcode の改正によって組織された章は、簡単に検索ができるように Xcode のリリースノート の版を組み合わせています。遭遇した問題が既に知られている問題かどうかを調べるには、主要な改訂の章を検索して下さい。リリースノートには含まれていない問題に遭遇した場合、すべての新しい問題のバグレポートを提出するようにしてください。