Upload
hasegawa
View
2.565
Download
1
Embed Size (px)
Citation preview
iPhone輪講第9回
Lessson16,18,19,20
Lesson16テーブルビュー
テーブルビュー
テーブルビューテーブルビューはテーブル型にデータを表示できる
文字列だけでなく,画像やボタンも中に入れる事ができる
テーブルビュー
テーブルビュー
NSTableView,NSTableColumnテーブルを実現するために中心となるのがNSTableViewというクラス
テーブルの列を管理するのがNSTableColumnというクラス
テーブル表示は非常に大きな機能で,他にも多くの機能が強調して働いている
NSTableColumn NSTableView
NSObject
NSResponder
NSControl
テーブルビュー
テーブルの構造
格子状にデータが並んでいる縦に格子を見たとき,その1つ1つを行(row)と呼び,横に見たときは列(column)と呼ぶ
列と行を指定する事でテーブル上のデータを表示する格子を特定できる
ある1つのデータを表示するものをセル(cell)と呼ぶ
セル
0行
...
1行2行
ヘッダ Title列 Link列
テーブルの構造
テーブルビュー
テーブルの構造
データ表示部分の上にあるのがヘッダ(header)と呼ばれるもの
ヘッダは列ごとに存在して,その列のタイトルなどを表示している セル
0行
...
1行2行
ヘッダ Title列 Link列
テーブルの構造
データソース
テーブルに値を表示するにはデータソースを使うデータソースはNSTableViewに表示するデータを提供するオブジェクト
NSTableViewはデータソースに対してこれから表示するデータに2種類の問い合わせをおこなう
1.『テーブルには行は何行あるのか?』
2.『ある行と,ある列に表示するデータは何か?』
この2つの問い合わせでテーブル表示をするためのデータはすべて揃う
データソース
テーブルでのデータの表示1.NSTableViewにデータソースとなるオブジェクトを設定する
この設定はソースコートでもInterface Builderでも行える
次にテーブルの行数をデータソースに問い合わせる
これによりテーブルの大きさが決まる
外観としては,右端の縦のスクロールバーの表示が変わる
データソース
テーブルでのデータの表示実際に表示するデータをデータソースに問い合わせる
画面に表示する分だけ問い合わせが行われる
それ以外の部分は画面に現れたときに初めてデータを問い合わせる事になる
データソース
『行は何行あるのか?』
『このセルの値は?』
テーブル表示とデータソースへの問い合わせ
データソース
データソースモデルの利点NSTableViewのデータソースによる方法には利点がある
テーブルに1万行のデータを表示することを考える
データソースの方法なら1万行あるという事だけわかればよく,実際にデータが必要なのは画面に表示されている数行分だけ
配列確保の方法だと最初に1万行のデータを用意しなければならないので時間がかかってしまう
データソースによる方法の方がパフォーマンスがよい
データソース
データソースのメソッドデータソースであるとNSTableViewに認識させるには,メソッドを実装すればよい
これがテーブルからデータソースへの2種類の問い合わせに対応するものになる
NSTableDataSource- (int)numberOfRowsInTableView:(NSTableView*)tableViewテーブルに表示する行の数を返す- (id)tableView:(NSTabkeView*)tableView objectValueForTableColumn:(NSTableColumn*)tableColumn row:(int)rowIndex指定された行rowIndexと列tableColumnにあたるデータの値を返す
データソース
NSTableViewのメソッド
NSTableViewは画面に登場すると自動的にデータソースに問い合わせに行く
アプリケーションの起動直後などはデータが用意できていない場合がある
一回表示させたデータを変更したいときもある
そういう時はまずデータを準備し,用意できたらreloadDataメソッドを呼ぶ
NSTableViewは現在表示しているデータをクリアして,もう一度データの問い合わせを行ってくれる
NSTableView- (void)reloadData
テーブルを再表示するために,データを読み込み直す
Lesson18デバッグ
NSLog
NSLogによる出力デバッグの基本はプログラムの実行中の変数の値を1つ1つチェクしていく事
それには変数の値が出力できればよい
手軽に行えるのがNSLogという関数
NSLog
NSlogの書式NSlogはメソッドではなく関数なので,インスタンスを作成する事なくいきなり呼び出せる
NSLogの宣言は以下のようになっている
関数void NSLog(NSString* format, …)
フォーマットformatを出力する
NSLog
数値を表示
ソースコード 実行結果
文字列を表示NSStrig型の文字の表示には%@を使う
%@に渡されたオブジェクトがnilだった場合(null)という文字列が表示される
オブジェクトの値を表示
すべてのオブジェクトの内容をNSLogに表示できるこの場合も%@を使う
例えばNSArrayのインスタンスを渡すと,配列に含まれているオブジェクトを表示できる
アドレスを表示
オブジェクトの変数に適切なオブジェクトが入っているかどうか確かめたいそういうときは変数の値を直接表示するのが有効
変数にはインスタンスが確保されているメモリのアドレスが入っている
こういった値は%xを使って16進数で表示する
デバッガ
デバッグビルド構成Xcodeにはビルド構成と呼ばれる設定項目がある
テンプレートからプロジェクトを作った場合デフォルトで「Debug」と「Release」というビルド項目がある
デバッガを使うにはビルド構成を「Debug」にしておく
ビルド構成の変更は[プロジェクト]→[アクティブなビルド構成を設定]メニューから「Debug」を指定する
デバッガ
ブレークポイントとデバッガの起動ブレークポイントはプログラムの実行を停止させるポイント
プログラムがブレークポイントまで実行されると,実行を一時停止してデバッガによる制御に切り替わる事になる
デバッガ
ブレークポイントとデバッガの起動ブレークポイントの設定の仕方は,ソースコードウィンドウの左端の余白をクリックする事で設定できる
一度設定したブレークポイントをクリックすると無効化できる
ブレークポイントを取り除くにはウィンドウの外へドラッグする
ブレークポイントなし
ブレークポイント有効 ブレークポイント無効
クリック
余白の外へドラッグ
余白の外へドラッグ
余白をクリック
デバッガ
ブレークポイントとデバッガの起動ブレークポイントを設定したら,デバッガを起動する
[ビルド]→[ビルドとデバッグ]メニューを選択するか,ツールバーの「ビルドとデバッグ」か「デバッグ」ボタンをクリック
デバッガのインタフェース
スレッド表示
ここには現在ブレークポイントで止まっているメソッドまたは関数がどこから呼び出されているのか示している
図ではまずmain関数があり色々なメソッドがあり,最終的に現在止まっているメソッドが呼び出されている
スレッド表示 変数表示
エディタ
デバッガのインタフェース
スレッド表示
最初の関数があって,次の関数を呼び出して,また次を呼び出して…と,関数の呼び出しが積み重なっているのを関数スタックと呼ぶ
関数スタックにある関数をクリックすると,呼び出している関数に移動できる
スレッド表示 変数表示
エディタ
デバッガのインタフェース
変数表示
ここでは実行中の変数の値を見る事ができる
主に見る事になるのは「Arguments」と「Locals」の項目
スレッド表示 変数表示
エディタ
デバッガのインタフェース
変数表示
Argumentsでは,この関数のまたはメソッドに渡された引数の値を表示している
Localsは,関数またはメソッドの内部で宣言された変数
スレッド表示 変数表示
エディタ
デバッガのインタフェース
エディタ
ここは実行中のソースコードが表示される
強調表示されているのが,現在停止しているポイント
スレッド表示 変数表示
エディタ
デバッガのステップ実行
ソースコードを見ながら1行ずつ実行して行く事をステップ実行と呼ぶステップ実行にはステップオーバー,ステップイン,ステップアウトの3つがある
デバッガのステップ実行
ステップオーバーソースコードの1行を実行するもの
どんな処理をしていても1行は1行として解釈する
仮にその1行がメソッドの呼び出しであっても一気に実行する
ステップイン実行する行がメソッドや関数の呼び出しだった場合,そのメソッドや関数の中へと入って行き,その中でまたステップ実行を続けて行く
ステップアウト現在のメソッドや関数を最後まで実行して,呼び出し元に戻る
デバッガのステップ実行
- (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); }}
例外
例外とはアプリケーションの実行中に重大な問題が起きたことを知らせる仕組み
例外が発生するとそこで関数やメソッドの実行をやめて,抜け出す事になる
return文では,その関数やメソッドからしか抜け出さないが,例外の場合はそのメソッドを呼んだメソッドからもその前のメソッドからも抜け出して行く
この点が少し違う - (void)methodA{ [self methodB];}
- (void)methodB{ [self methodC];} - (void)methodC
{ …
}
問題発生例外の場合は
どんどんさかのぼって行く
return文の場合はメソッドの呼び出し元に戻る
Lesson19アプリケーションの仕上げ
アイコンのための画像ファイルの作成
画像ファイルのフォーマット
アイコンの絵を描くときの大きさは512×512ピクセル
Finderでは512×512から16×16まで縮小される
使える色数は32bitカラーで,透明色も使える
アイコン画像はTIFFフォーマットで作成するのが一般的
PNGフォーマットでもよい
アイコンフォーマットファイルの作成
Icon Composerアイコンのための画像ができたら,それをIcon Composerを使って.icnsという拡張子のファイルに変換する
Icon Composerは『/Developer/Applications/Utilities』にある
Icon Composer
使い方
起動すると,アイコン画像を設定する画面が出てくる
ここに作成した画像ファイルをドラッグして追加すればよい
元になる画像
ドラッグ!
Icon Composer
使い方
左下にあるボタンを使うと,透明度を設定するためのマスク,背景を指定したプレビュー表示を確認する事ができる
すべての画像を設定したら[File]→[Save]で保存する
アイコンファイルの追加
出来たアイコンファイルをプロジェクトに追加する
アイコンファイルをプロジェクトフォルダの中へ移動する
プロジェクトウィンドウの「グループとファイル」へドラッグ&ドロップで追加する
どのグループに追加してもよいが,通常は「Resoueces」の中
アプリケーションの設定
ターゲットとは実際に出来るプロダクトを管理するもの
例えば今アプリケーションを作っている
最終的に出来上がるプロダクトはアプリケーションのファイル形式になる
しかし,そのアプリケーションの機能の一部を他のアプリケーションでも使いたいときがあるかもしれない
そういうとき,フレームワークやプラグインといった形式のプロダクトを作る
そこで登場するのがターゲット
アプリケーションの設定
ターゲットはプロジェクトに含まれていて,プロダクトの形式を定義するもの
アプリケーションのもの以外にもプラグインのためや,フレームワークのためのターゲットを追加する事も出来る
1つのプロジェクトに複数のターゲットを含める事も出来る
これを利用すれば,プロジェクトに登録されたファイルを,あるものはアプリケーションターゲット用に,あるものはプラグインターゲット用にと指定できる
ターゲットによるアプリケーションの設定
ターゲットの情報
プロジェクトウィンドウのグループとファイルからターゲットの項目を開き,そこにアプリケーションのためのターゲットがあるのでダブルクリックする
[ファイル]→[情報を見る]メニューでもターゲットの情報パネルが開く
ターゲットによるアプリケーションの設定
アプリケーションの名前標準ではプロジェクト名がそのままアプリケーションの名前になる
ビルドのタブの「構成」のポップアップを「すべての構成」,「表示」のポップアップを「このレベルに定義された設定」にする
すると下のテーブルに「プロダクト名」という項目が出てくる
これがアプリケーションの名前のための項目
ターゲットによるアプリケーションの設定
識別子識別子はシステムが使う,このアプリケーションを識別するための名前
プロパティタブの上から2番目の「識別子」というテキストフィールドで設定をする
識別子の付け方は逆DNS記法という書き方を使う
ドメイン名を逆から書いて,その後にアプリケーション名をつける方法
例えばmomiage.jpで作ったRSSReaderアプリケーションには,「jp.momiage.rssreader」という識別子がつけられる
ターゲットによるアプリケーションの設定
アイコン
プロパティタブの「アイコンファイル」のテキストフィールドに,プロジェクトに追加したアイコンの名前を入力する
バージョン
アプリケーションのバージョン番号
プロパティタブの上から5番目あたりにある「バージョン」のテキストフィールドを使う
ユーザインタフェースのローカライズ
xibファイルのローカライズ
ユーザインタフェースの定義はxibファイルでおこなった
なのでローカライズ作業はxibファイル中心におこなう
RSS Readerのプロジェクトのグループとファイルにある「MainMenu.xib」を見てみる
階層構造を表す三角のボタンを押すと,「English」という項目がある
ユーザインタフェースのローカライズ
xibファイルのローカライズ
これは『英語環境で使うためのMainMenu.xib』を表している
これを言語ファイルと呼ぶ
ローカライズとは様々な言語ファイルを追加して行く事
ユーザインタフェースのローカライズ言語ファイルを追加する
MainMenu.xibを選択したまま情報パネルまたは,MainMenu.xibの下のEnglishの情報パネルを開く
どちらにも「ローカリゼーションを追加...」というボタンがある
これが言語ファイルを追加するためのボタン
ボタンを押すと「新しいローカリゼーションの名前を入力」と書かれているシートが出てくる
ここに追加する言語などの名前を指定する
ユーザインタフェースのローカライズ
追加されたファイルの確認言語ファイルを追加するとRSS Readerのプロジェクトフォルダの中に.lprojの拡張子がついたフォルダが追加されている
今回はJapaneseという言語ファイルを作ったので「Japanese.lproj」
.lprojの拡張子がついているフォルダがローカライズしたファイルを入れておくためのフォルダ
ユーザインタフェースのローカライズ
xibファイルのローカライズ日本語用のMainMenu.xibを開く
Interface Builderに移動して,メニュー,ウィンドウのタイトル,テキストフィールドなどを全部日本語に置き換える
ローカライズは基本的にこれで終わり
日本語へローカライズ
ビルド構成
ビルド構成とはコンパイラでビルドするとき,たくさんの細かい設定が必要
しかし,テンプレートを使ってプロジェクトを作ると,あらかじめ必要な設定がされている
設定のセットを何種類か作っておいて,切り替えられるようになっている
これがビルド構成
標準では「Debug」と「Release」という2つのビルド構成がある
ビルド構成
ビルド構成の確認ビルド構成を確認するのにはターゲットの情報パネルのビルドのタブを使う
「構成」というポップアップメニューがビルド構成を指定するもの
「構成」で「Debug」を選び,「表示」で「すべての設定」を選べば,Debugに含まれるすべての設定を確認することができる
ビルド構成
ビルド構成をReleaseにするアプリケーションの設定を終えて配布するためのビルドを作るときは必ずビルド構成を「Release」にしなくてはいけない
ビルド構成の切り替えは[プロジェクト]→[アクティブなビルド構成を設定]メニューで切り替える事が出来るので,そこからReleaseを選ぶ
出来上がったアプリケーション
出来上がったアプリケーションの位置を確認するビルドを行うとプロジェクトフォルダ内にbuildというフォルダが出来ている
その中にはビルド構成ごとにフォルダが出来ている
Release構成を選択したので,Releaseのフォルダの中を見る
そこにあるのが出来上がったアプリケーションファイル
Lesson20アプリケーションのリリース
リリースドキュメント
ドキュメントに含めるもの作者の連絡先
メールアドレスを書きたくない場合でもリリースを配布している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 最初の公開
リリースドキュメント
ドキュメントに含めるものライセンス
これはフリーウェアなのか?シェアウェアなのか?
フリーウェアの場合自由に再配布していいのか?事前に連絡が必要か?
シェアウェアの場合支払い方法は?
このような情報
マニュアル
アプリケーションのマニュアル
アーカイブ
zipアーカイブzipと呼ばれるフォーマットで圧縮したもの
たくさんのファイルをひとつにまとめると同時に圧縮もしてくれる
zipアーカイブの作成は,Finderで対象となるファイルやフォルダを右クリックし,コンテキストメニューから「“XXX” を圧縮」を選択する
アーカイブディスクイメージディスクイメージは,フォルダをまるでハードディスクやDVDのようにデスクトップでマウントできるようにするもの
ディスクイメージを作るにはディスクユーリティというアプリケーションを使う
起動して,[ファイル]→[新規]→[フォルダからのディスクイメージ]を選択
オープンダイアログが開くので,そこから対象となるフォルダを選択する
すると「フォルダからの新規イメージを作成」というダイアログが表示され,名前を付けて保存すれば.dmgファイルになる
おわり