2011年2月28日月曜日

ユニットテストフレームワークを使う

OCMock のサイト

プロジェクトへの追加方法
stackoverflow / OCMock for iPhone (iOS4, XCode 3.2.3)

ただし、以下のように文字だけで説明している。
Delete ocmock.framework, the copy file phase, and any search path linking to ocmock header.

check out the latest version from ocmock svn repo : http://svn.mulle-kybernetik.com/OCMock/trunk

ダウンロード元は、svn の他に OCMock のサイト にも .dmg ファイルのダウンロードリンクがある。

Build the OCMockPhoneSim target

1.
ダウンロードしたフォルダ内にある OCMock.xcodeproj を開く。

2.
画像のように概要を設定する。




Copy the libOCMock.a and Headers folder in your project folder
OCMock プロジェクトフォルダ内の、 build -> Release-iphonesimulator フォルダの中身(Headers フォルダとlibOCMock.a)を自分のプロジェクトへコピーする。

add the libOCMock.a to your framework and add a link to the headers folder in your target library search path.
1.
プロジェクトへ追加する。
グループとファイル -> Frameworks を右クリック
Frameworks -> 追加 -> 既存のフレームワーク -> (その他を追加 ボタンを押下) 先ほどビルドした libOCMock.a を追加する。

2.
ヘッダ検索パスと他のリンカフラグを設定する。
グループとファイル -> (新しく追加したテスト)ターゲット -> (Unit Test Bundle)名 -> 情報を見る をクリックする。

3.
ヘッダ検索パスは、Headersフォルダへのパスを設定する。
ex) $(SRCROOT)/OCMock/Headers

リンカフラグ は次を設定する。
-all_load

---------
xcode のセットアップはapple のユニットテストのページ等を参考にするみたい。
Unit Testing Applications

2011年2月24日木曜日

アルバムの一覧をサムネイルで表示する

Contains the URL of a thumbnail of a photo or album cover.

<media:thumbnail> エレメントにあるURLを利用してアルバムを一覧表示できる。

参照:
Picasa Web Albums elements reference -> Media RSS (media namespace) element reference -> media:thumbnail

GDataObject の基本

GDataObject についての説明を picasa の場合で考えてみる。
Servers respond to client GData requests with feeds that include lists of entries.

Each feed and entry is composed of elements. Elements represent either standard Atom XML elements, or custom-defined GData elements.

Feeds, entries, and elements are derived from GDataObject, the base class that implements XML parsing and generation.

おおよそのイメージはこんな感じなのだろうか。



参照:
gdata-objectivec-client -> Wiki -> GDataObjeCIntroduction -> Google Data APIs Basics

2011年2月2日水曜日

オブジェクトの所有権の取得 retain

受け取ったオブジェクトを破棄したくない場合もあります。たとえば、インスタンス変数にオブジェクトをキャッシュする必要がある場合です。
このような場合は、オブジェクトが不要かどうかを知っているのは自分だけであるため使用中にオブジェクトが破棄されないことを保証する機能が必要となります。これは、retainメッセージを使って行います。

 – (void)setMainSprocket:(Sprocket *)newSprocket {
 if (mainSprocket != newSprocket) { // 古いインスタンス変数を確実に解放するための判定を行う
 [mainSprocket release];
 mainSprocket = [newSprocket retain]; // 参照カウンタが1増える
    }
 }

---------------
参照
Cocoaメモリ管理プログラミングガイド オブジェクトの所有権の取得