SlideShare uma empresa Scribd logo
1 de 60
Baixar para ler offline
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ファイルになる
おわり

Mais conteúdo relacionado

Mais de hasegawa

Cocoa Pro08
Cocoa Pro08Cocoa Pro08
Cocoa Pro08
hasegawa
 
Cocoa Pro07
Cocoa Pro07Cocoa Pro07
Cocoa Pro07
hasegawa
 
Cocoa Pro6
Cocoa Pro6Cocoa Pro6
Cocoa Pro6
hasegawa
 
Cocoa Pro5
Cocoa Pro5Cocoa Pro5
Cocoa Pro5
hasegawa
 
Cocoa Pro4
Cocoa Pro4Cocoa Pro4
Cocoa Pro4
hasegawa
 
Cocoa Pro01
Cocoa Pro01Cocoa Pro01
Cocoa Pro01
hasegawa
 
Cocoa Pro03
Cocoa Pro03Cocoa Pro03
Cocoa Pro03
hasegawa
 
CocoaPro02
CocoaPro02CocoaPro02
CocoaPro02
hasegawa
 

Mais de hasegawa (9)

Objc01
Objc01Objc01
Objc01
 
Cocoa Pro08
Cocoa Pro08Cocoa Pro08
Cocoa Pro08
 
Cocoa Pro07
Cocoa Pro07Cocoa Pro07
Cocoa Pro07
 
Cocoa Pro6
Cocoa Pro6Cocoa Pro6
Cocoa Pro6
 
Cocoa Pro5
Cocoa Pro5Cocoa Pro5
Cocoa Pro5
 
Cocoa Pro4
Cocoa Pro4Cocoa Pro4
Cocoa Pro4
 
Cocoa Pro01
Cocoa Pro01Cocoa Pro01
Cocoa Pro01
 
Cocoa Pro03
Cocoa Pro03Cocoa Pro03
Cocoa Pro03
 
CocoaPro02
CocoaPro02CocoaPro02
CocoaPro02
 

Cocoa Pro09