magazine.gif 最新iOSプログラミング徹底解説

まえがき
本書の内容について

Chapter 01 オブジェクト指向とメモリ管理

  • 1-1 ARC時代のオブジェクト指向
    • オブジェクトとその動き
    • オブジェクトが持つリテインカウント
    • オブジェクトへの参照とオーナーシップ
    • 複数のオブジェクトからのオーナーシップ
    • オブジェクトのリリースとメモリリーク
    • ARCによって解決されること
    • プロパティの定義と利用
    • プロジェクトでARCを機能させる
    • セッタとゲッタの利用
    • オートリリースとその必要性
    • weakが必要な場合
    • IBOutletをweakにする場合としない場合
    • 循環参照とメモリリーク
  • 1-2 Swiftのオブジェクト指向
    • クラスの定義
    • プロパティの定義
    • 計算プロパティの定義
    • メソッドの定義
    • スコープの扱い
    • オブジェクトを生成してプロパティやメソッドを利用する
    • さまざまなオブジェクト指向の機能を組み込んだクラス
    • プロパティの読み書き前後に処理を加える
    • セッタとゲッタの定義
    • 使用されるまで初期化されないプロパティ
    • オブジェクトからインデックスを指定して値を取り出す
  • 1-3 ブロックを理解する
    • ブロックとは何か
    • ブロックを変数に記録する
    • 引数のあるブロックの記述方法
    • ブロックの内外で共通に使う変数
    • 関数の引数がブロックの場合
    • 長くなるブロックの定義をマクロ定義で見やすくなる
    • CocoaのAPIで使用されるブロック
    • ブロック自体をオブジェクトとして扱う
    • メソッドの引数がブロックの場合
    • Swiftのクロージャ
    • ブロック内でオブジェクト自身を参照する
    • ブロックの利点

Chapter 02 アプリケーションとさまざまな処理

  • 2-1 アプリケーションの状態
    • アプリケーションのクラスUIApplication
    • マルチタスクとアプリケーションの状態
    • アプリケーション起動時のステート
    • バックグラウンド動作を行うときのステート
    • 一定時間続けるバックグラウンド処理
    • アプリケーションに設定するバックグラウンドの動作モード
    • fetchバックグラウンドモードの場合
    • 書類のオープン
    • 書類をURLで指定して開く
  • 2-2 XMLとJSONの処理
    • JSONによるデータ表現
    • JSONデータのパース
    • JSONのパースが失敗する場合
    • XMLデータ
    • XMLのパース
    • 異なるXML形式のデータのパース
    • XMLデータの活用
  • 2-3 オペレーションキューによるマルチタスク
    • スレッドとマルチタスク
    • スレッドとオペレーション
    • NSOperationのサブクラスの作成例
    • バックグラウンドタスクの終了を待つ
  • 2-4 NSCoderとアーカイブ
    • アーカイブとシリアライズ
    • オブジェクトをファイルに保存する
    • 自分で作ったクラスをNSCoding対応にする
    • NSDataクラスのオブジェクトに保存する
  • 2-5 Swiftと開発環境
    • SwiftのプロジェクトにObjective-Cのクラスを追加する
    • Objective-CからSwiftのクラスを利用する
    • Swiftでデバッグ時にだけログ出力を行う

Chapter 03 ビューとビューコントローラ

  • 3-1 ビューとビューコントローラの基本
    • 階層化されるビュー
    • 代表的なビューのプロパティ
    • ビューの座標系
    • アフィン変数とtransformプロパティ
    • UIViewのサブクラスを定義する場合
    • ビューコントローラによるイベント取得
  • 3-2 制約を使いこなす
    • オートレイアウトとオートサイジング
    • 制約を利用して四隅や中央に配置する
    • 制約の設定内容
    • 制約を追加する
    • 制約を利用して中央にオブジェクトを配置する
    • オブジェクトの相対的な位置に配置する制約
    • 制約の扱い
    • 制約を実現するクラス
    • 制約を実現するクラスとエラー対応
    • オートサイジングとサイズインスペクタ
  • 3-3 サイズクラスとトレイト
    • トレイトとそのコレクション
    • 各デバイスの既定のサイズクラス
    • サイズクラスとシミュレーション
    • サイズクラスに対する表示と非表示のコントロール
    • サイズクラスによる制約のコントロール
  • 3-4 モーダルビューとポップオーバー
    • モーダルビューコントローラ
    • ポップオーバーコントローラ
    • バージョンごとの重複表示の違い
    • ポップオーバーの閉じるボタンとモーダルビューとの両立
  • 3-5 ビューを使ったアニメーション
    • iOSにおけるアニメーション
    • UIViewのクラスメソッドによるアニメーション
    • プロパティを変化させるアニメーションのサンプル
    • 時間をかけてアルファ値や色を変更する
    • 座標位置を変更するアニメーション
    • 別のビューに切り替えるアニメーション
    • UIViewのアニメーション用クラスメソッド

Chapter 04 ナビゲーションのためのユーザインターフェース

  • 4-1 ストーリーボードの動作
    • Interface Builderの立ち位置
    • NIBファイルからストーリーボードへ
    • iOS 7でのストーリーボードを使うアプリケーション
    • iOS 8でのストーリーボードを使うアプリケーション
    • 起動時に表示される画面の定義
    • 起動画面の設定と画面解像度
    • アプリケーションの最初の段階で行われること
    • ストーリーボードで最初に表示されるシーン
    • ナビゲーションコントローラ
    • シーンでのセグウェイによる遷移
    • ユーザインターフェースの形態とセグウェイ
    • セグウェイの遷移途中で呼び出されるメソッド
  • 4-2 スプリットビューコントローラの利用
    • スプリットビューコントローラ
    • iPhoneとiPadで動作が異なる「show detail」セグウェイ
    • スプリットビューコントローラのデリゲート
    • iPhoneとiPadでの動作を両立させる
    • マスター領域を表示するボタンの表示
    • iPhoneでスプリットビューコントローラを使う
    • RootViewControllerクラスの動作
    • スプリットビューコントローラをカスタマイズする
  • 4-3 アラートビューとアクションシート
    • iOS 6以降の表示形態と使用するクラスの違い
    • アラートコントローラによるアラートの表示
    • アラートコントローラによるアクションシートの表示
    • アラートコントローラとInterface Builder
    • UIAlertViewクラスによるアラートビューの表示
    • UIActionSheetクラスによるアクションシートの表示

Chapter 05 テーブルビューを使いこなす

  • 5-1 テーブルビューの基本
    • テーブルビューを使ったユーザインタフェース
    • テーブルに含まれる要素
    • サンプルプログラムで使う元データ
    • アプリケーションのデリゲート先のクラス
    • テーブルを実現するクラス
    • セルの標準スタイル
    • 標準スタイルのセルで表示する
  • 5-2 セルのタップとビューコントローラの連携
    • 遷移先のビューコントローラ
    • セルとセグウェイ
    • セルからのセグウェイの設定
  • 5-3 カスタムセルを利用する
    • カスタムセルのクラス定義
    • Interface Builderでのカスタムセルの構築
    • セルを生成するメソッドでラベルに値を設定する
  • 5-4 スタティックセルを利用する
    • 表示と編集機能を持った詳細表示のビューコントローラ
    • スタティックセルを使ったテーブルビュー
    • データを表示するまで
    • 編集結果を保存する
  • 5-5 セル編集の機能を利用する
    • セルを削除する
    • セルの順序変更を行う
    • 新たなセルを追加する
    • 編集状態のセルに挿入アイコンを表示する

Chapter 06 高機能なユーザインターフェース

  • 6-1 スクロールビューの利用
    • スクロールビューの動作
    • スクロールビュー自身の座標系
    • スクロールビューを組み込む
    • 回転とアフィン変換
    • スクロール機能の組み込み
    • オブジェクトを画面全体に配置する
  • 6-2 ページビューコントローラ
    • テンプレートで作るアプリケーション
    • オブジェクトの全体構成
    • オブジェクトを準備する
    • 他のアプリケーションから開く
    • データビューとモデルビューの関係とモデルコトンローラ
    • データビューコントローラの実装
    • ページビューのデータソース処理
    • ページビューのデリゲート処理
    • PDFを表示する仕組み
  • 6-3 コレクションビューコントローラ
    • コレクションビューの機能
    • コレクションビューの構築で利用するクラス
    • コレクションビュー向けのビューコントローラ
    • コレクションビューの設定とサイズ指定
    • セルを構成するクラス
    • ビューコントローラの実装
    • カレンダーを実現するための日付の処理
  • 6-4 Webビューの活用
    • UIWebViewの動作
    • Webビューを使ったサンプルプログラム
    • Webビューへの表示
    • ビューの外部から内部に働きかける
    • ビュー内部のインタラクションとつなげる
    • iOS 8から搭載されたWebKit
  • 6-5 多言語に対応したアプリケーション
    • アプリケーションの多言語対応
    • ストーリーボードのローカライズ
    • ストーリーボードの編集と言語リソース
    • プログラム内で使用する文字列の多言語化
    • アプリケーション名のローカライズ
    • その他のリソースのローカライズ

Chapter 07 ネットワークを理解する

  • 7-1 簡単に実現できる通信処理
    • 通信処理を取り巻くiOSの機能
    • 通信先の動作について
    • セッションとタスクについて
    • NSSessionを使ったもっとも簡単な通信処理
    • 接続先と設定オブジェクトの生成
    • セッションおよびタスクのオブジェクトの生成
    • 完了ブロックの定義
    • 完了ブロックをメインスレッドで稼働する
    • ボディがある場合の作成方法
    • エラー対応
  • 7-2 デリゲートを伴う通信処理
    • デリゲートを行ったNSURLSession
    • SSLによる通信と自己署名証明書
    • 認証を伴う通信
    • リダイレクトのカスタマイズ
    • 通信中のプログレス表示
  • 7-3 バックグラウンド動作を伴う通信処理
    • バックグラウンドで実行するタスク
    • バックグラウンド時のデリケートメソッド
    • バックグラウンド中の通信終了を受け付けるユーザに通知する
    • バックグラウンドでのダウンロード処理のまとめ

Chapter 08 Core Dataを理解する

  • 8-1 Core Dataの基本概念
    • iOSでのアプリケーション内のデータ保存
    • Core Dataの動作のポイント
    • Core Dataのオブジェクトモデル
    • Core Dataのクラス
    • Core Dataの使いどころ
    • Core Dataに関するドキュメント
  • 8-2 Xcodeで行うモデル作成
    • モデル作成の手順
    • モデルファイルの用意
    • エンティティの作成
    • アトリビュートの咲く英
    • 複数のエンティティからリレーションシップを作成
    • クラスファイルの生成
    • 生成されたエンティティごとのソースコード
  • 8-3 Core Dataでのコンテキストの利用
    • モデルに相当するクラスの定義
    • Core Dataのコンテキストを得るまで
    • コンテキストからデータを取り出す
    • Core Dataで得られた結果を画面に表示する
    • コンテキストにデータを追加する
    • Core Dataから得られる異なる結果を画面に表示する
    • データを削除する
  • 8-4 フェッチ時の検索条件指定
    • NSPredicateクラスのオブジェクトの生成
    • 数値や日付についての検索条件
    • 文字列についての検索条件
    • フェッチリクエストをモデルに定義する
  • 8-5 モデルの変化に追随させる
    • モデルの変化で何が発生するか
    • モデルをバージョン管理する
    • バージョン間で移行可能にする
    • 自動的な以降が行える範囲
  • 8-6 計算プロパティの追加とインデックス付きテーブルビュー
    • データベースにないプロパティの定義
    • 追加定義したプロパティ
    • インデックス付きのリストを作る
    • セクションとインデックスが一致しない場合の作成方法
  • 8-7 オブザーバを利用した実装
    • MVCアーキテクチャにおける画面更新
    • Core Dataにおけるオブザーバブルなモデル
    • オブザーバブルなモデルを構築する
    • サンプルアプリケーションの動作
    • モデル側のデータ処理メソッド
    • デリゲートへの対応
    • セクションがある場合のデリケートメソッド
    • オブザーバの適切な実装
  • 8-8 マルチスレッド環境で稼働させる
    • スレッドとCore Data
    • 単一のスレッドに束縛する方法
    • 複数のコンテキストを並列動作させる
    • 階層化コンテキストを利用したサンプルプログラム
    • XMLファイルを読み込んでオブジェクトを生成
    • すべてのオブジェクトを削除するメソッド
    • テーブルビューを利用したビューコントローラ
    • サンプルプログラムの動作について