60
iPhone輪講 9Lessson16,18,19,20

Cocoa Pro09

Embed Size (px)

Citation preview

Page 1: Cocoa Pro09

iPhone輪講第9回

Lessson16,18,19,20

Page 2: Cocoa Pro09

Lesson16テーブルビュー

Page 3: Cocoa Pro09

テーブルビュー

テーブルビューテーブルビューはテーブル型にデータを表示できる

文字列だけでなく,画像やボタンも中に入れる事ができる

テーブルビュー

Page 4: Cocoa Pro09

テーブルビュー

NSTableView,NSTableColumnテーブルを実現するために中心となるのがNSTableViewというクラス

テーブルの列を管理するのがNSTableColumnというクラス

テーブル表示は非常に大きな機能で,他にも多くの機能が強調して働いている

NSTableColumn NSTableView

NSObject

NSResponder

NSControl

Page 5: Cocoa Pro09

テーブルビュー

テーブルの構造

格子状にデータが並んでいる縦に格子を見たとき,その1つ1つを行(row)と呼び,横に見たときは列(column)と呼ぶ

列と行を指定する事でテーブル上のデータを表示する格子を特定できる

ある1つのデータを表示するものをセル(cell)と呼ぶ

セル

0行

...

1行2行

ヘッダ Title列 Link列

テーブルの構造

Page 6: Cocoa Pro09

テーブルビュー

テーブルの構造

データ表示部分の上にあるのがヘッダ(header)と呼ばれるもの

ヘッダは列ごとに存在して,その列のタイトルなどを表示している セル

0行

...

1行2行

ヘッダ Title列 Link列

テーブルの構造

Page 7: Cocoa Pro09

データソース

テーブルに値を表示するにはデータソースを使うデータソースはNSTableViewに表示するデータを提供するオブジェクト

NSTableViewはデータソースに対してこれから表示するデータに2種類の問い合わせをおこなう

1.『テーブルには行は何行あるのか?』

2.『ある行と,ある列に表示するデータは何か?』

この2つの問い合わせでテーブル表示をするためのデータはすべて揃う

Page 8: Cocoa Pro09

データソース

テーブルでのデータの表示1.NSTableViewにデータソースとなるオブジェクトを設定する

この設定はソースコートでもInterface Builderでも行える

次にテーブルの行数をデータソースに問い合わせる

これによりテーブルの大きさが決まる

外観としては,右端の縦のスクロールバーの表示が変わる

Page 9: Cocoa Pro09

データソース

テーブルでのデータの表示実際に表示するデータをデータソースに問い合わせる

画面に表示する分だけ問い合わせが行われる

それ以外の部分は画面に現れたときに初めてデータを問い合わせる事になる

Page 10: Cocoa Pro09

データソース

『行は何行あるのか?』

『このセルの値は?』

テーブル表示とデータソースへの問い合わせ

Page 11: Cocoa Pro09

データソース

データソースモデルの利点NSTableViewのデータソースによる方法には利点がある

テーブルに1万行のデータを表示することを考える

データソースの方法なら1万行あるという事だけわかればよく,実際にデータが必要なのは画面に表示されている数行分だけ

配列確保の方法だと最初に1万行のデータを用意しなければならないので時間がかかってしまう

データソースによる方法の方がパフォーマンスがよい

Page 12: Cocoa Pro09

データソース

データソースのメソッドデータソースであるとNSTableViewに認識させるには,メソッドを実装すればよい

これがテーブルからデータソースへの2種類の問い合わせに対応するものになる

NSTableDataSource- (int)numberOfRowsInTableView:(NSTableView*)tableViewテーブルに表示する行の数を返す- (id)tableView:(NSTabkeView*)tableView objectValueForTableColumn:(NSTableColumn*)tableColumn row:(int)rowIndex指定された行rowIndexと列tableColumnにあたるデータの値を返す

Page 13: Cocoa Pro09

データソース

NSTableViewのメソッド

NSTableViewは画面に登場すると自動的にデータソースに問い合わせに行く

アプリケーションの起動直後などはデータが用意できていない場合がある

一回表示させたデータを変更したいときもある

そういう時はまずデータを準備し,用意できたらreloadDataメソッドを呼ぶ

NSTableViewは現在表示しているデータをクリアして,もう一度データの問い合わせを行ってくれる

NSTableView- (void)reloadData

テーブルを再表示するために,データを読み込み直す

Page 14: Cocoa Pro09

Lesson18デバッグ

Page 15: Cocoa Pro09

NSLog

NSLogによる出力デバッグの基本はプログラムの実行中の変数の値を1つ1つチェクしていく事

それには変数の値が出力できればよい

手軽に行えるのがNSLogという関数

Page 16: Cocoa Pro09

NSLog

NSlogの書式NSlogはメソッドではなく関数なので,インスタンスを作成する事なくいきなり呼び出せる

NSLogの宣言は以下のようになっている

関数void NSLog(NSString* format, …)

フォーマットformatを出力する

Page 17: Cocoa Pro09

NSLog

数値を表示

ソースコード 実行結果

Page 18: Cocoa Pro09

文字列を表示NSStrig型の文字の表示には%@を使う

%@に渡されたオブジェクトがnilだった場合(null)という文字列が表示される

Page 19: Cocoa Pro09

オブジェクトの値を表示

すべてのオブジェクトの内容をNSLogに表示できるこの場合も%@を使う

例えばNSArrayのインスタンスを渡すと,配列に含まれているオブジェクトを表示できる

Page 20: Cocoa Pro09

アドレスを表示

オブジェクトの変数に適切なオブジェクトが入っているかどうか確かめたいそういうときは変数の値を直接表示するのが有効

変数にはインスタンスが確保されているメモリのアドレスが入っている

こういった値は%xを使って16進数で表示する

Page 21: Cocoa Pro09

デバッガ

デバッグビルド構成Xcodeにはビルド構成と呼ばれる設定項目がある

テンプレートからプロジェクトを作った場合デフォルトで「Debug」と「Release」というビルド項目がある

デバッガを使うにはビルド構成を「Debug」にしておく

ビルド構成の変更は[プロジェクト]→[アクティブなビルド構成を設定]メニューから「Debug」を指定する

Page 22: Cocoa Pro09

デバッガ

ブレークポイントとデバッガの起動ブレークポイントはプログラムの実行を停止させるポイント

プログラムがブレークポイントまで実行されると,実行を一時停止してデバッガによる制御に切り替わる事になる

Page 23: Cocoa Pro09

デバッガ

ブレークポイントとデバッガの起動ブレークポイントの設定の仕方は,ソースコードウィンドウの左端の余白をクリックする事で設定できる

一度設定したブレークポイントをクリックすると無効化できる

ブレークポイントを取り除くにはウィンドウの外へドラッグする

ブレークポイントなし

ブレークポイント有効 ブレークポイント無効

クリック

余白の外へドラッグ

余白の外へドラッグ

余白をクリック

Page 24: Cocoa Pro09

デバッガ

ブレークポイントとデバッガの起動ブレークポイントを設定したら,デバッガを起動する

[ビルド]→[ビルドとデバッグ]メニューを選択するか,ツールバーの「ビルドとデバッグ」か「デバッグ」ボタンをクリック

Page 25: Cocoa Pro09

デバッガのインタフェース

スレッド表示

ここには現在ブレークポイントで止まっているメソッドまたは関数がどこから呼び出されているのか示している

図ではまずmain関数があり色々なメソッドがあり,最終的に現在止まっているメソッドが呼び出されている

スレッド表示 変数表示

エディタ

Page 26: Cocoa Pro09

デバッガのインタフェース

スレッド表示

最初の関数があって,次の関数を呼び出して,また次を呼び出して…と,関数の呼び出しが積み重なっているのを関数スタックと呼ぶ

関数スタックにある関数をクリックすると,呼び出している関数に移動できる

スレッド表示 変数表示

エディタ

Page 27: Cocoa Pro09

デバッガのインタフェース

変数表示

ここでは実行中の変数の値を見る事ができる

主に見る事になるのは「Arguments」と「Locals」の項目

スレッド表示 変数表示

エディタ

Page 28: Cocoa Pro09

デバッガのインタフェース

変数表示

Argumentsでは,この関数のまたはメソッドに渡された引数の値を表示している

Localsは,関数またはメソッドの内部で宣言された変数

スレッド表示 変数表示

エディタ

Page 29: Cocoa Pro09

デバッガのインタフェース

エディタ

ここは実行中のソースコードが表示される

強調表示されているのが,現在停止しているポイント

スレッド表示 変数表示

エディタ

Page 30: Cocoa Pro09

デバッガのステップ実行

ソースコードを見ながら1行ずつ実行して行く事をステップ実行と呼ぶステップ実行にはステップオーバー,ステップイン,ステップアウトの3つがある

Page 31: Cocoa Pro09

デバッガのステップ実行

ステップオーバーソースコードの1行を実行するもの

どんな処理をしていても1行は1行として解釈する

仮にその1行がメソッドの呼び出しであっても一気に実行する

ステップイン実行する行がメソッドや関数の呼び出しだった場合,そのメソッドや関数の中へと入って行き,その中でまたステップ実行を続けて行く

ステップアウト現在のメソッドや関数を最後まで実行して,呼び出し元に戻る

Page 32: Cocoa Pro09

デバッガのステップ実行

- (void)checkWithArray:(NSArray*)array{ int i; for (i = 0; i < 10; i++) { id object; object = [array objectAtIndex:0];

[self checkWithObject:object]; }}

- (void)checkWithObject:(id)object{ if ([object isKindOfClass:[NSString class]]) { NSString(@”string object %@”, object); }}

Page 33: Cocoa Pro09

例外

例外とはアプリケーションの実行中に重大な問題が起きたことを知らせる仕組み

例外が発生するとそこで関数やメソッドの実行をやめて,抜け出す事になる

return文では,その関数やメソッドからしか抜け出さないが,例外の場合はそのメソッドを呼んだメソッドからもその前のメソッドからも抜け出して行く

この点が少し違う - (void)methodA{ [self methodB];}

- (void)methodB{ [self methodC];} - (void)methodC

{ …

}

問題発生例外の場合は

どんどんさかのぼって行く

return文の場合はメソッドの呼び出し元に戻る

Page 34: Cocoa Pro09

Lesson19アプリケーションの仕上げ

Page 35: Cocoa Pro09

アイコンのための画像ファイルの作成

画像ファイルのフォーマット

アイコンの絵を描くときの大きさは512×512ピクセル

Finderでは512×512から16×16まで縮小される

使える色数は32bitカラーで,透明色も使える

アイコン画像はTIFFフォーマットで作成するのが一般的

PNGフォーマットでもよい

Page 36: Cocoa Pro09

アイコンフォーマットファイルの作成

Icon Composerアイコンのための画像ができたら,それをIcon Composerを使って.icnsという拡張子のファイルに変換する

Icon Composerは『/Developer/Applications/Utilities』にある

Page 37: Cocoa Pro09

Icon Composer

使い方

起動すると,アイコン画像を設定する画面が出てくる

ここに作成した画像ファイルをドラッグして追加すればよい

元になる画像

ドラッグ!

Page 38: Cocoa Pro09

Icon Composer

使い方

左下にあるボタンを使うと,透明度を設定するためのマスク,背景を指定したプレビュー表示を確認する事ができる

すべての画像を設定したら[File]→[Save]で保存する

Page 39: Cocoa Pro09

アイコンファイルの追加

出来たアイコンファイルをプロジェクトに追加する

アイコンファイルをプロジェクトフォルダの中へ移動する

プロジェクトウィンドウの「グループとファイル」へドラッグ&ドロップで追加する

どのグループに追加してもよいが,通常は「Resoueces」の中

Page 40: Cocoa Pro09

アプリケーションの設定

ターゲットとは実際に出来るプロダクトを管理するもの

例えば今アプリケーションを作っている

最終的に出来上がるプロダクトはアプリケーションのファイル形式になる

しかし,そのアプリケーションの機能の一部を他のアプリケーションでも使いたいときがあるかもしれない

そういうとき,フレームワークやプラグインといった形式のプロダクトを作る

そこで登場するのがターゲット

Page 41: Cocoa Pro09

アプリケーションの設定

ターゲットはプロジェクトに含まれていて,プロダクトの形式を定義するもの

アプリケーションのもの以外にもプラグインのためや,フレームワークのためのターゲットを追加する事も出来る

1つのプロジェクトに複数のターゲットを含める事も出来る

これを利用すれば,プロジェクトに登録されたファイルを,あるものはアプリケーションターゲット用に,あるものはプラグインターゲット用にと指定できる

Page 42: Cocoa Pro09

ターゲットによるアプリケーションの設定

ターゲットの情報

プロジェクトウィンドウのグループとファイルからターゲットの項目を開き,そこにアプリケーションのためのターゲットがあるのでダブルクリックする

 [ファイル]→[情報を見る]メニューでもターゲットの情報パネルが開く

Page 43: Cocoa Pro09

ターゲットによるアプリケーションの設定

アプリケーションの名前標準ではプロジェクト名がそのままアプリケーションの名前になる

ビルドのタブの「構成」のポップアップを「すべての構成」,「表示」のポップアップを「このレベルに定義された設定」にする

すると下のテーブルに「プロダクト名」という項目が出てくる

これがアプリケーションの名前のための項目

Page 44: Cocoa Pro09

ターゲットによるアプリケーションの設定

識別子識別子はシステムが使う,このアプリケーションを識別するための名前

プロパティタブの上から2番目の「識別子」というテキストフィールドで設定をする

識別子の付け方は逆DNS記法という書き方を使う

ドメイン名を逆から書いて,その後にアプリケーション名をつける方法

例えばmomiage.jpで作ったRSSReaderアプリケーションには,「jp.momiage.rssreader」という識別子がつけられる

Page 45: Cocoa Pro09

ターゲットによるアプリケーションの設定

アイコン

プロパティタブの「アイコンファイル」のテキストフィールドに,プロジェクトに追加したアイコンの名前を入力する

バージョン

アプリケーションのバージョン番号

プロパティタブの上から5番目あたりにある「バージョン」のテキストフィールドを使う

Page 46: Cocoa Pro09

ユーザインタフェースのローカライズ

xibファイルのローカライズ

ユーザインタフェースの定義はxibファイルでおこなった

なのでローカライズ作業はxibファイル中心におこなう

RSS Readerのプロジェクトのグループとファイルにある「MainMenu.xib」を見てみる

階層構造を表す三角のボタンを押すと,「English」という項目がある

Page 47: Cocoa Pro09

ユーザインタフェースのローカライズ

xibファイルのローカライズ

これは『英語環境で使うためのMainMenu.xib』を表している

これを言語ファイルと呼ぶ

ローカライズとは様々な言語ファイルを追加して行く事

Page 48: Cocoa Pro09

ユーザインタフェースのローカライズ言語ファイルを追加する

MainMenu.xibを選択したまま情報パネルまたは,MainMenu.xibの下のEnglishの情報パネルを開く

どちらにも「ローカリゼーションを追加...」というボタンがある

これが言語ファイルを追加するためのボタン

ボタンを押すと「新しいローカリゼーションの名前を入力」と書かれているシートが出てくる

ここに追加する言語などの名前を指定する

Page 49: Cocoa Pro09

ユーザインタフェースのローカライズ

追加されたファイルの確認言語ファイルを追加するとRSS Readerのプロジェクトフォルダの中に.lprojの拡張子がついたフォルダが追加されている

今回はJapaneseという言語ファイルを作ったので「Japanese.lproj」

.lprojの拡張子がついているフォルダがローカライズしたファイルを入れておくためのフォルダ

Page 50: Cocoa Pro09

ユーザインタフェースのローカライズ

xibファイルのローカライズ日本語用のMainMenu.xibを開く

Interface Builderに移動して,メニュー,ウィンドウのタイトル,テキストフィールドなどを全部日本語に置き換える

ローカライズは基本的にこれで終わり

日本語へローカライズ

Page 51: Cocoa Pro09

ビルド構成

ビルド構成とはコンパイラでビルドするとき,たくさんの細かい設定が必要

しかし,テンプレートを使ってプロジェクトを作ると,あらかじめ必要な設定がされている

設定のセットを何種類か作っておいて,切り替えられるようになっている

これがビルド構成

標準では「Debug」と「Release」という2つのビルド構成がある

Page 52: Cocoa Pro09

ビルド構成

ビルド構成の確認ビルド構成を確認するのにはターゲットの情報パネルのビルドのタブを使う

「構成」というポップアップメニューがビルド構成を指定するもの

「構成」で「Debug」を選び,「表示」で「すべての設定」を選べば,Debugに含まれるすべての設定を確認することができる

Page 53: Cocoa Pro09

ビルド構成

ビルド構成をReleaseにするアプリケーションの設定を終えて配布するためのビルドを作るときは必ずビルド構成を「Release」にしなくてはいけない

ビルド構成の切り替えは[プロジェクト]→[アクティブなビルド構成を設定]メニューで切り替える事が出来るので,そこからReleaseを選ぶ

Page 54: Cocoa Pro09

出来上がったアプリケーション

出来上がったアプリケーションの位置を確認するビルドを行うとプロジェクトフォルダ内にbuildというフォルダが出来ている

その中にはビルド構成ごとにフォルダが出来ている

Release構成を選択したので,Releaseのフォルダの中を見る

そこにあるのが出来上がったアプリケーションファイル

Page 55: Cocoa Pro09

Lesson20アプリケーションのリリース

Page 56: Cocoa Pro09

リリースドキュメント

ドキュメントに含めるもの作者の連絡先

メールアドレスを書きたくない場合でもリリースを配布しているWebページのアドレスは書いておく

アプリケーションのバージョンと更新履歴

新しいリリースを出すたびに履歴を追加して行く

RSS Reader更新履歴200X.3.20 2.0 Podcast機能追加200X.3.12 1.1 Atomフォーマットに対応200X.3.7 1.0.1 一部メニューが動作しない問題の修正200X.3.1 1.0 最初の公開

Page 57: Cocoa Pro09

リリースドキュメント

ドキュメントに含めるものライセンス

これはフリーウェアなのか?シェアウェアなのか?

フリーウェアの場合自由に再配布していいのか?事前に連絡が必要か?

シェアウェアの場合支払い方法は?

このような情報

マニュアル

アプリケーションのマニュアル

Page 58: Cocoa Pro09

アーカイブ

zipアーカイブzipと呼ばれるフォーマットで圧縮したもの

たくさんのファイルをひとつにまとめると同時に圧縮もしてくれる

zipアーカイブの作成は,Finderで対象となるファイルやフォルダを右クリックし,コンテキストメニューから「“XXX” を圧縮」を選択する

Page 59: Cocoa Pro09

アーカイブディスクイメージディスクイメージは,フォルダをまるでハードディスクやDVDのようにデスクトップでマウントできるようにするもの

ディスクイメージを作るにはディスクユーリティというアプリケーションを使う

起動して,[ファイル]→[新規]→[フォルダからのディスクイメージ]を選択

オープンダイアログが開くので,そこから対象となるフォルダを選択する

すると「フォルダからの新規イメージを作成」というダイアログが表示され,名前を付けて保存すれば.dmgファイルになる

Page 60: Cocoa Pro09

おわり