Objective-C 2.0徹底解説

概 要

Mac OS X、iPhone、iPadのソフト開発に使われるプログラミング言語「Objective-C 2.0」のビギナー向け入門書です。iPhoneの爆発的ヒットによってMacOSXやiOSの開発を考える人が増えています。しかし、初心者の多くが、C言語とObjective-C、Foundationフレームワーク、さらにその上にあるフレームワークのどこから勉強すればいいのかわかりません。そこで本書では、Objective-Cの本当の意味での入門書を望まれるビギナー向けに、C言語とObjective-Cの基本から、Foundationフレームワークの使い方、iOS開発の導入までを、順番に徹底的に解説しています。初心者が知っておきたい知識がすべてわかります。サンプルプログラムのダウンロードサービス付き。

著者 掌田津耶乃
価格 本体3600円(税別)
ISBN 978-4-7980-2935-1
発売日 2011/3/25
判型 B5変
色数 1色
ページ数 688
CD/DVD
対象読者 初級
シリーズ
表紙イメージ
購入 アマゾンで購入する
楽天で購入する

※リンク先によっては、販売ページが用意されていないことがあります。あらかじめご了承ください。

新しいウィンドウで開く 書籍購入のご案内

サポート

サポート情報は以下からご参照下さい。

サポート情報へのリンク

目次

★Chapter_01 Objective-Cとは?

■01_01 Objective-Cという言語

Objective-Cという言語の歴史

Mac OS XからiOSへ

iOSとObjective-C

Objective-Cの特徴

Objective-Cの開発環境:Xcode

■01_02 Xcodeの準備

Apple Developerに登録する

Xcodeのインストール

インストールされたファイル類

Xcodeを起動する

新規プロジェクトの作成

プロジェクトウィンドウについて

ウインドウ上部の「ツールバー」のアイコンについて

ソースコードファイルとエディタについて

プロジェクトの実行

ビルドされたプログラムがある場所

★Chapter_02 C言語としての基本文法

■02_01 値と変数

サンプルコードを見る

「文」の基本ルール

値について――基本型とオブジェクト型

数値のリテラル

文字のリテラルとエスケープ文字

変数と基本型

基本型の種類

値の演算と代入

複合代入演算子について

インクリメント・デクリメント演算子

定数

値と変数を使う

異なる型の演算

型変換(キャスト)

有効範囲と有効桁数について

オーバーフローとアンダーフロー

printfと変換指定子(変換文字列)

■02_02 制御構文

制御の役割

if-else文

複数条件の連結と論理演算子

switch-case文

while文とdo-while文

break文による構文終了

continue文による繰り返しの継続

for文による繰り返し

構文のネスト

構文と変数のスコープ

■02_03 配列と文字列

配列とは?

初期値を用意する

要素数とsizeof

配列のデータ幅

多次元配列について

バッファオーバーラン

char型と文字列

文字列の構造

標準ライブラリのstrcat関数による文字列操作

文字列を配列にコピーするstrcpy関数

■02_04 ポインタとアドレス

ポインタとは?

ポインタから値を得る

ポインタを使って文字列を保管する

ポインタを使って配列を操作するポインタ演算

■02_05 関数と構造体

main関数再び!

戻り値のない関数

関数から構造体へ

構造体の利用例

構造体を持った構造体

構造体のポインタを利用する

列挙型

★Chapter_03 Objective-Cのオブジェクト指向

■03_01 クラスの基本を理解する

構造化からオブジェクト指向へ

オブジェクト指向の基本的な考え方

Command Line Toolプロジェクトの作成

FoundationフレームワークとCocoaフレームワーク

クラスの作成

.h拡張子と.m拡張子

.hファイルと.mファイルの基本形

インターフェイスの定義

インプリメンテーションの定義

サンプルクラスMyObjectの定義を書く

メソッドの定義

インスタンスの生成とメソッドの呼び出し

オブジェクトを変数に代入する

メッセージ式

allocは「クラスメソッド」

動的結合と静的結合

クラスとメソッドの命名規約

■03_02 クラスの仕組み

引数を持ったメソッド

返値を持ったメソッド

インスタンス変数

初期化処理:initメソッド

インスタンス変数に対する外部からのアクセス権

「アクセサ」メソッドと値の読み書き

メソッドの「オーバーロード」

オーバーライドによる機能の変更

■03_03 クラスの詳細を見る

クラスメソッド

「クラス変数」とグローバル変数

クラスはオブジェクトか?

Classはクラスオブジェクトの型である

抽象クラス

抽象クラスに代わる「クラスクラスタ」

■03_04 カテゴリ――メソッドの追加によるクラスの拡張

カテゴリとは?

カテゴリを利用してクラスの機能を強化する

■03_05 プロトコル――メソッドの「一覧表」

プロトコルとは?

プロトコルの宣言と実装

プロトコルを持っているか確認するconformsToProtocol:

必須メソッドとオプションメソッド

オプションメソッドの有無をチェックするrespondsToSelector:

@selectorによるセレクタの指定

■03_06 ガベージコレクションとメモリ管理

オブジェクト管理とは?

ガベージコレクションとは?

ガベージコレクションは何を削除するのか?

ガベージコレクションの動作

回収されるオブジェクトとnil参照

ガベージコレクションの強制的な始動

■03_07 オートリリースによるメモリ管理

オブジェクトのオートリリースとは?

オートリリースしないオブジェクトの混在

オートリリースとコンビニエンスコンストラクタ

■03_08 リファレンスカウンタによるメモリ管理

リファレンスカウンタとは?

リファレンスカウンタの使用例

リファレンスカウンタの動きを確認する

オートリリース時のリファレンスカウンタの動き

ガベージコレクション時のリファレンスカウンタ

★Chapter_04 Foundationフレームワークの基本

■04_01 NSObjectとObjective-C独自の型・値

FoundationとAppKit

NSObjectとルートクラス

NSObjectのインスタンスメソッド

NSObjectのクラスメソッド

Objective-Cで用いる定義済みの型

Objective-Cで用いる値のクラス

■04_02 NSStringによるテキスト処理

テキストとNSStringクラス

initWithFormat:によるフォーマット済みNSStringの生成

フォーマット記述子

ファイルから読み込んでNSStringを生成するinitWithContentsOfFile:encoding:error:

URLを指定してテキストを取得するinitWithContentsOfURL:encoding:error:

NSStringテキストをファイルに出力する

テキストを結合するstringByAppendingString:

フォーマットしてNSStringインスタンスを結合するstringByAppendingFormat:

charポインタとNSStringの変換

NSStringEncodingについて

NSStringから基本型への変換

空白文字の削除(stringByTrimmingCharactersInSet:)とNSCharacterSet

NSStringの比較(isEqualToString:およびcompare:)とテキスト長(length)

大文字・小文字の操作

テキストの抽出

テキストの分割

テキストを検索するrangeOfString:

テキストの置換

行と段落の区切り

■04_03 NSMutableStringによる可変長テキストの処理

NSMutableStringの基本と仕組み

NSMutableString型オブジェクトに対するテキストの挿入と削除

NSMutableStringの置換

NSStringか、NSMutableStringか――使い分けのポイント

■04_04 NSScannerによるテキストスキャン

NSScannerの基本と仕組み

NSScannerの主なメソッド

■04_05 数値と日付のクラス

NSNumberのメソッド群

NSNumberから数値を取り出すメソッド群

NSNumberの値の比較――compare:とisEqualToNumber:

■04_06 NSDecimalNumberとBCD

10進数を処理するNSDecimalNumber

NSDecimalNumberによる演算

■04_07 NSNumberFormatterによる数値のフォーマット

NSNumberFormatterの基本と仕組み

数値フォーマットの記号を変更する

■04_08 NSDateによる日時の扱い

dateメソッドによるNSDateインスタンスの生成

NSDateインスタンスの作成と日時設定

指定した日時からの経過秒数でNSDateを得るメソッド

日時の比較

2つの日時の差を求める

NSDateに時間を加算する

日時をフォーマットするNSDateFormatterクラス

■04_09 カレンダー用クラスNSCalendar

NSCalendarの基本と仕組み

NSDateComponentsで利用可能な要素

NSDateComponentsを利用した日時計算

★Chapter_05 コレクションクラス

■05_01 配列とNSArray

配列とNSArray

NSArrayの作成

NSArrayに保管するオブジェクトに関するメソッド

インデックスセットのクラス――NSIndexSet

NSMutableIndexSetによるインデックスセットの作成

NSArrayにオブジェクトを追加する

sortedArrayUsingSelector:による配列のソート

ソート用メソッドとNSComparisonResult

独自に定義したクラスをsortedArrayUsingSelector:で並べ替える

■05_02 NSMutableArray

NSMutableArrayについて

NSMutableArrayからオブジェクトを削除するメソッド群

■05_03 ブロックとイテレータ

ブロックとは?

sortUsingComparatorとNSComparator

ブロックの書き方

NSEnumeratorとイテレータ

Objective-C 2.0の「高速列挙」――イテレータ用に拡張されたfor文

enumerateObjectsUsingBlock:によるイテレータ時のブロック処理

■05_04 NSArrayを更に活用する

NSPredicateによるフィルタリング

NSPredicateのフォーマット

NSPredicateのフォーマット要素

NSArrayのファイルアクセス

NSArrayを使った簡易データ管理プログラム

■05_05 集合を扱うコレクションクラス ――NSSetとNSMutableSet

コレクションクラスの分類

NSSetによる「集合」――重複と順序のないデータ構造

NSSetへのオブジェクトの追加

NSSet要素の取得

NSMutableSet

NSSetどうしの集合演算

追加された回数を記憶するNSCountedSet

■05_06 NSDictionaryとキー値コーディング

NSDictionaryとは?

ファイル・URLからNSDictionaryを生成する

特定要素の取得――objectForKey:とobjectsForKeys:notFoundMarker:

NSDictionaryの全要素を処理するメソッド群

NSEnumeratorによるイテレータ

ブロックを利用したNSEnumerator処理

保管データを編集できるNSMutableDictionary

NSMutableDictionaryを使った簡易データ管理

NSSortDescriptorを使ったNSDictionary配列のソート

「弱い参照」に対応するNSHashTableとNSMapTable

弱い参照の働きを確認する

■05_07 NSData、NSMutableData、NSValue

バイナリデータを扱うNSData

NSMutableDataによるバイナリデータの編集

NSValueによる値のラッピング

★Chapter_06 ファイル・初期設定・シリアライズ

■06_01 NSFileManagerによるファイルとデータの操作

NSFileManagerの基本

NSStringでパスを生成する

NSStringでパスを取得するメソッド群

NSStringのパス関連機能の一覧

NSFileManagerによるファイルのコピー、移動、削除

NSFileManagerによるファイル・フォルダの作成

ファイルの存在やアクセス権のチェック

リンクの作成

ディレクトリ内にあるファイルを調べる

NSDirectoryEnumeratorによるディレクトリ操作

カレントディレクトリの移動

ファイル属性を調べる

ファイル、フォルダ、ファイルシステムの属性を表す定数

■06_02 ユーザーデフォルトとプロパティリスト

ユーザーデフォルトとNSUserDefaults

NSUserDefaultsの基本的な使い方

NSUserDefaultsによる初期設定の基本処理

保存された設定ファイルを確認する

「ドメイン」について

プロパティリストとNSPropertyListSerialization

NSPropertyListSerializationによるファイル出力

NSPropertyListSerializationによるファイルからの読み込み

■06_03 プロパティ・エンコード・シリアライズ

独自クラスのシリアライズについて

シリアライズする前に解決が必要な問題群

プロパティの作成

MyObjectにプロパティを実装する

シリアライズを行うNSCodingプロトコルの実装

NSUserDefaultsのカテゴリによる拡張

NSKeyedArchiverおよびNSKeyedUnarchiverについて

MyObjectを初期設定に保存する

汎用的なプロパティリストへの保存

複数のオブジェクトを保存する

ファイルからオブジェクトを復元する

★Chapter_07 エラー処理・URLローディング・マルチスレッド

■07_01 例外処理構文とNSError

2つのエラー処理の仕組み

■07_02 例外処理構文(@try構文)

@try構文の基本形

例外処理構文を利用する

nameプロパティで例外の種類に対応

NSExceptionインスタンスの作成と送信

独自クラスに例外を組み込む例

複数の@catchによる例外の捕捉

独自クラスを例外処理する例

例外クラスを使わない例外処理(@throw)

■07_03 NSError

NSErrorによるエラーチェックの例

NSErrorの主な機能

NSErrorを受け渡すメソッドの定義

独自クラスから渡されるNSErrorの処理

■07_04 URLローディング

NSURLとURLアドレスの基本的な使い方

NSURLのインスタンス作成

NSURLからURLの情報を得るメソッドの一覧と使用例

NSURLによるアドレスの編集

NSURLConnectionによるアクセス(同期通信)の仕組み

NSURLRequestのメソッド

NSURLConnectionのインスタンス生成

NSURLConnectionのメソッド

■07_05 デリゲートと非同期通信

デリゲートとは?

NSURLConnectionのデリゲート・メソッド

デリゲートクラスの定義方法

非同期通信を行う

NSHTTPURLResponseとレスポンス情報

NSURLDownloadによるダウンロード

指定したファイル名でダウンロードする

アップロードされたファイル名のままダウンロードする

■07_06 タイマー

NSTimerとタイマー

タイマー用クラスの作成例

NSTimerを実行させる

NSTimerのスケジューリング

タイマーと実行クラスの統合

NSInvocationとは?

NSMethodSignatureとは?

MyTimerObjectクラスを実装する

■07_07 マルチスレッド

マルチ「スレッド」とは?

NSThreadクラスによるマルチスレッドの実行

別スレッドで実行するクラスの作成例

NSRunLoopによる実行ループの役割

@synchronizedによる排他的処理

■07_08 ロック

NSLockによるスレッドのロック

★Chapter_08 GUIアプリケーションの開発

■08_01 UIKitとiOS

AppKitとUIKit

アプリとMVC構造

プログラムの起動からの流れ

プロジェクトの作成

プロジェクトファイルの構成

main関数の処理

UIApplicationDelegateによるデリゲート

デリゲートメソッドの実装

UIViewを制御するUIViewControllerの用意

Interface Builderの起動

2つのnibファイルに用意される要素

GUI部品を作成する

GUIとアウトレットとのバインド

プロパティとメソッドの実装

デフォルト以外のイベントの割付け

■08_02 主なUIクラスの利用

UISwitchによるON/OFF入力

Segmented Controlによる複数選択

コントロールの動的生成

コントロールへの動的イベント・バインド

「Interface Builderを使用しない」アプリの作成

UIApplicationクラスの作成

■08_03 Core Graphics

iOSの画面表示

UIViewクラスの作成

drawRect:メソッドの処理

図形作成と描画の関係

イメージの描画

2つの座標系

2つの座標空間

座標空間の変換

UIViewの座標そのものを変換する

オフスクリーンバッファ

オフスクリーンを使った描画プログラムの例

PR

秀和システム