はじめに(Part I)


基本的なセットアップ


Swift は、Cocoa と Objective-C とのシームレスな互換性を提供するように設計されています。Swift 内で Objective-C API を使用したり、Objective-C 内で Swift API を使用できます。これは、Swift を開発のワークフローに統合するための、簡単で便利で強力なツールにします。


このガイドでは、Cocoa アプリを開発するときに有利に使用することができる、Swift と Objective-C の互換性の三つの重要な側面をカバーしています:


これらの機能についての学習を始める前に、Cocoa のシステムフレームワークにアクセスできる Swift の環境を設定する方法の基本的な理解が必要です。


Swift 環境の設定


Swift を使用して Cocoa アプリ環境での経験を始めるには、提供された Xcode のテンプレートのいずれかから新しい Swift プロジェクトを作成します。


Xcode で Swift プロジェクトを作成するには

  1. [File] > [New] > [Project] > (iOS,watchOS,tvOS, または macOS) > [Application] > あなたの選んだテンプレート を選択します。
  2. [Language] ポップアップメニューをクリックして、Swift を選択します。


newproject_2x


Swift プロジェクトの構造は、Objective-C のプロジェクトとほぼ同じで、1つの重要な違いがあります。Swift にはヘッダファイルがありません。そこには実装とインタフェースの間に明示的な記述はないので、クラス、関数、定数に関するすべての情報は、単一の .swift ファイルに存在します。これについては、同じプロジェクトでの Swiftと Objective-C で詳しく説明します。


ここから、アプリのデリゲートに Swift のコードを書くことで実験を始めることができ、または、File > New > File > (iOS,watchOS,tvOS or macOS) > Source > Swift を選択して、新しい Swift のファイルを作成できます。


要件


Swift 3.0 を使用してアプリを作成するには、Xcode 8.0 以降、および以下の基本 SDK が必要です。


プラットフォーム基本 SDK 要件
macOS10.12
iOS10.0
watchOS3.0
tvOS10.0


Swift コンパイラと Xcode は、iOS 7 または macOS 10.9 の最小デプロイメントターゲットを強制します。以前のデプロイメントターゲットを設定すると、ビルドに失敗します。


注意: コマンドラインからビルドされた実行可能ファイルは、それらの @rpath に Swift ライブラリを見つけることを期待します。コマンドラインからビルドされた Swift 実行可能ファイルを出荷する予定がある場合、Swift のダイナミックライブラリも同様に出荷する必要があります。Xcode 内からビルドされた Swift 実行ファイルには、実行時環境が静的にリンクされています。


Swift のインポートプロセスの理解


Xcode プロジェクトを設定したら、Swift から Objective-C の作業を開始するために Cocoa または Cocoa Touch から任意のフレームワークをインポートできます。


任意の Objective-C のフレームワークまたは C のライブラリは、モジュール が Swift に直接インポートできるようにサポートしています。これは Objective-C のシステムフレームワーク-Foundation や、UIKit、そして SpriteKit のように-だけでなく、システムに付属の共通の C ライブラリなどをすべて含んでいます。たとえば、Swift から Foundation API を使用するには、ファイルの先頭に、以下の import 文を追加して下さい。


このインポート文で、Foundation の クラス、プロトコル、メソッド、プロパティ、および定数を全て、Swift ファイルがアクセス可能になります。


インポートプロセスはまっすぐです。Objective-C のフレームワークは、ヘッダファイル内の API を売り物にしています。Swift では、これらのヘッダー·ファイルは、Objective-C のモジュールにまでコンパイルされ、Swift の API として Swift にインポートされます。このインポートプロセスが、Objective-C のコードで宣言された関数、クラス、メソッド、および型が Swift で現れる方法を決定します。関数やメソッドの場合、このプロセスは、引数および戻り値の型に影響します。型の場合、インポートのプロセスは、以下のことに影響します:


Swift で Objective-C を使用する方法の詳細については、Objective-C の API との相互作用 を参照してください。


注意: Swift に C++ コードを直接インポートすることはできません。代わりに、C++ コード用の Objective-C または C ラッパーを作成して下さい。


Objective-C の中に Swift をインポートするモデルは、Swift に Objective-C をインポートするのに使用したものと似ています。Swift はフレームワークからのような API を、Swift のモジュールからとしての売り物にしています。これらの Swift のモジュールは Objective-C のヘッダを生成しているのと並んで。これらのヘッダは Objective-C に戻ってマッピングすることができる API を売り物にしています。彼らは、Objective-C では使用できない言語機能に梃入れをするため、一部の Swift API は Objective-C に戻ってマッピングしません。


Objective-C で Swift を使用する方法の詳細については、同じプロジェクトでの Swift と Objective-C を参照して下さい。






次:Objective-C の API との対話
目次
Xcode 9 の新機能

Swift:はじめに
Swift Programming Language
Swift Blog より

  • はじめに(Part I)
  • 基本的なセットアップ
  • Swift 環境の設定
    要件
    Swift のインポートプロセスの理解
  • 相互運用性(Part II)
  • Objective-C の API との相互作用
  • 初期化
  • クラスファクトリメソッドとコンビニエンスイニシャライザ
    失敗可能な初期化
    プロパティへのアクセス
    メソッドでの作業
  • id の互換性
  • Any のダウンキャスト
    動的なメソッドの検索
    認識されないセレクタと optional の連鎖
  • ヌル可能性と optionals
  • ヌル可能性のないオブジェクトに Optional をブリッジする
    プロトコルで修飾されたクラス
    軽量級の汎用
    拡張機能
  • クロージャ
  • self をキャプチャする時の強い循環参照を回避する
  • オブジェクトの比較
  • Hash する
  • Swift の型の互換性
  • Objective-C で Swift インターフェースの構成
    動的な送出を要求
  • セレクタ
  • Objective-C メソッドの安全でない呼び出し
    キーとキーパス
  • Swift のクラスとプロトコルの書き方及び Objective-C の動作
  • Objective-C のクラスからの継承
  • NSCoding
    プロトコルの採用
    イニシャライザとデイニシャライザを書く
    Objective-C API で Swift クラス名を使用する
  • Interface Builder との統合
  • アウトレットとアクションを使った作業
    ライブレンダリング
  • プロパティ属性の指定
  • Strong と Weak
    読み/書き可能と読み取り専用
    コピーの意味
    コアデータ管理オブジェクトサブクラスの実装
    プロトコルの宣言
  • Cocoa フレームワークでの作業
  • Foundation
  • ブリッジ型
  • 名前の変更された型
  • 文字列

    配列
    セット
    Dictionary
  • Core Foundation
  • 再マッピングされた型
    メモリ管理オブジェクト
    管理されないオブジェクト
    統合ログオン
    Cocoa 構造体
  • Cocoa デザインパターンの採用
  • デリゲート化
    怠惰な初期化
  • エラー処理
  • エラーの catch と処理
    エラーを Optional の値に変換する
    エラーを throw する
    キー値の監視
    Undo
    ターゲットアクション
    シングルトン
    Introspection(内省)
  • シリアル化
  • シリアル化された表現の検証
    ローカル化
    自動解放プール
    API 利用可能性
    コマンドライン引数の処理
  • C の API との相互作用
  • プリミティブな型
  • グローバル定数
  • import された定数の列挙体と構造体
  • 関数
  • 可変個引数の関数
  • 構造体
  • 型メンバーとして関数をインポート
    列挙型
    Option のセット
    ユニオン
    ビットフィールド
    名前のない構造体と union のフィールド
  • ポインタ
  • 定数ポインタ
    可変ポインタ
    自動解放ポインタ
    関数ポインタ
    バッファポインタ
    ヌルポインタ
    ポインタの計算
    データ型サイズの計算
    1回限りの初期化
  • プリプロセッサの指令
  • 簡単なマクロ
    複雑なマクロ
    条件付きコンパイルブロック
  • うまく組み合わせる(part III)
  • 同じプロジェクトでの Swift と Objective-C
  • 「うまく組み合わせる」概観
  • 同じアプリターゲット内からコードを import
  • Objective-C から Swift への import
    Swift から Objective-C への import
  • 同じフレームワークターゲットからコードを import
  • Objective-C から Swift への import
    Swift から Objective-C への import
    外部フレームワークの import
  • Objective-C からの Swift の使い方
  • Objective-C ヘッダーでの Swift クラスまたはプロトコルの参照
    Objective-C クラスで採用可能な Swift プロトコルを宣言
    Objective-C の実装での Swift プロトコルの採用
    Objective-C から使用できる Swift のエラー型の宣言
  • Objective-C インターフェイス用に Swift 名をオーバーライド
  • クラスファクトリメソッド
    列挙型
    Swift で Objective-C インターフェイスを使用できないようにする
    Objective-C 宣言を洗練する
    プロダクトモジュールの命名
    トラブルシューティングのヒントと注意
  • 移行(Part IV)
  • Objective-C から Swift への移行
  • 移行のための Objective-C コードの準備
  • 移行プロセス
  • はじめる前に
    作業中に
    見終わったら
    トラブルシューティングのヒントと注意
  • 更新履歴
  • マニュアルの更新履歴












    トップへ(Swift を Cocoa と Objective-C と使う)












    トップへ(Swift を Cocoa と Objective-C と使う)












    トップへ(Swift を Cocoa と Objective-C と使う)