2011/06/07

iToyPiano 1.0

iPhone アプリ「iToyPiano 1.0」をリリースしました。カラフルでファンシーなピアノ鍵盤から、レトロで可愛いトイサウンドの音階が、高音質で再生されます。価格:115円

2011/02/28

Tally Counter 1.0 Release

Tally Counter 1.0 

物の数を集計するカウンターです。
価格 ¥115
機能
1. ポートレート・ビュー:カウンター画面は一つ。
2. ランドスケープ・ビュー:カウンター画面は二つ。
3. カウントした数は、メールで送信できます。
4. カウントした数を自動で保存します。

2011/01/17

§3.7 プロパティ-iPhone SDKの教科書より

プロパティの機能を使って、メソッドを簡潔な記述にする。

@property(オプション指定) データ型 プロパティ名;

//利用するクラスのヘッダ・ファイルの読み込み
#import (Foundation/Foundation.h>

//クラスの宣言
@interface Ball:NSObject
{
//インスタンス変数の宣言
float size; //大きさ
}

//プロパティの宣言
@property float size; //オプション指定は省略

@end


クラスの実装で、@synthesizeを用いて以下の形式でプロパティの実装を指示する。

@synthesize プロパティ名;

//ヘッダ・ファイルの読み込み
#import “Ball.h”
//クラスの実装
@implementation Ball
@synthesize size;

@end

このプロパティを使うには、インスタンス名とプロパティ名を .(ドット)でつなぐ。

インスタンス名.プロパティ名

//Ballクラスのインスタンスを生成して初期化する
Ball *myBall = [[Ball alloc] init];

//sizeプロパティに値を代入
myBall.size=20.5;

//取得した値の確認
NSLog(@”myBallSize= %f”, myBallSize);

//インスタンスを解放
[myBall release];

§3.6 クラスの実装-iPhone SDKの教科書より

拡張子.mのソースコード・ファイルに書く。

#import “ヘッダ・ファイル名”
@implementation クラス名
メソッドの実装
@end

//ヘッダ・ファイルの読み込み
#import “Ball.h”

//クラスの実装
@implementation Ball

//sizeメソッドの実装
-(void)setSize:(float)newSize
{
size=mewSize;
}

@end

ヘッダ・ファイルでは宣言しなかったメソッドを実装してもよい。

Ballクラスの利用
//Ballクラスのインスタンスを生成して初期化する
Ball *myBall=[[Ball alloc] init];

//sizeの設定
[myBall setSize:10.0];

//sizeの取得
float myBallSize=[myBall size];

//取得した値の確認
NSLog(@”myBallSize= %f”, myBallSize);

//インスタンスを解放
[myBall release];

§3.5 クラスの宣言-iPhone SDKの教科書より

クラスは、クラスの宣言と実装に分けて書く。
クラスの宣言は拡張子が.hであるヘッダ・ファイルに書く。
クラスの実装は拡張子が.mであるソースコード・ファイルに書く。

Ball.h

Ball.m

ひとつのファイルにクラスと宣言と実装を書いてもよい。
ひとつのファイルで、複数のクラスを書くこともできる。

#import <ヘッダ・ファイル名>
@interface クラス名:スーパークラス名
{
インスタンス変数の宣言;
}

+(戻り値の型)クラス・メソッド;
-(戻り値の型)インスタンス・メソッド;

@end

/////////////////////////////////////////////////////////////////////////////////////////////////////////////////

//利用するクラスのヘッダ・ファイルの読み込み
#import (Foundation/Foundation.h> //NSObjectクラスを宣言している

//クラスの宣言
@interface Ball:NSObject
{
//インスタンス変数の宣言
float size; //大きさ
}

//メソッドの宣言
-(float)size;
-(void)setSize:(float)newSize; //引数のある場合

@end

スーパークラスの指定は必須である。スーパークラスを必要としない場合は、NSObjectを指定する。

引数が2個以上あるメソッドであれば、キーワードと:(コロン)を置いて、2番目以降の引数の型と引数の名前を指定する。

-(戻り値の型) メソッド名;

-(戻り値の型) メソッド名: (引数の型) 引数名;

-(戻り値の型) メソッド名: (引数1の型) 引数名1 キーワード名: (引数2の型) 引数名2;

§3.4 クラスとメソッド-iPhone SDKの教科書より

メソッドには、クラス・メソッドとインスタンス・メソッドがある。

allocメソッドは、クラス・メソッド。(NSStringクラスに対して使っているから)
initメソッドは、インスタンス・メソッド。(NSStringクラスのインスタンスに対して使っているから)

プラス記号は、クラス・メソッドであることを示す。
マイナス記号は、インスタンス・メソッドであることを示す。

+ stringWithString:
- initWithString:

クラスの継承は複数回行われることも多い。

NSString : NSObject

NSObjectクラスは、ルート・クラスである。

§3.3 インスタンスの管理と自動解放-iPhone SDKの教科書より

インスタンスはリファレンス・カウンタという数値を持つ。
最初の数値は1だ。
releaseメソッドはリファレンス・カウンタの値を1減らす。
リファレンス・カウンタが0になったインスタンスは破棄され、メモリから消滅する。
リファレンス・カウンタの値を1増やすためには、retainメソッドを使う。

retain リファレンス・カウンタの値を1増やす。
release リファレンス・カウンタの値を1減らす。

autorelease インスタンスの自動解放を指定する。

name=[[[NSString alloc] initWithString:@”Masayuki”] autorelease];

§3.2 インスタンスの生成と解放-iPhone SDKの教科書より

インスタンス=[クラス名 生成メソッド];

インスタンス=[インスタンス 初期化メソッド];

インスタンス生成メソッド alloc
インスタンス初期化メソッド init

name=[NSString alloc];
name=[name init];

size=[name length];

処理が終わればインスタンスを解放する。

release インスタンスを解放すうる。

[name release];

メソッド呼び出しによってオブジェクトが戻り値として返される場合は、[ ]を多重化してメソッドを呼び出せる。

name=[[NSString alloc] init];

文字列定数を引数としてinitWithString:メソッドによって文字列を初期化すれば、指定した文字列定数と同じ文字列を持てる。

name=[[NSString alloc] initWithString:@”Masayuki”];

引数のインスタンスやメソッドをnilという記号で表せば、それは何も指定しないことを表す。
C言語ではNULLを使う。

§3.1 Objective-C言語 変数宣言とメソッド呼び出し-iPhone SDKの教科書より

変数の型 変数の名前;

変数がオブジェクトであれば、変数の型をクラスの名前とし、変数名の前に*(アスタリスク)を付ける。
クラス名 *変数の名前;

NSString *name;

どんなクラスのインスタンスでも表せる宣言として、id型を用いることもできる。
クラスが特定できる場合は、id型は使わない。id型では、変数の前にアスタリスクをつけない。

id name;

アスタリスク付きの変数は、参照する場合は変数名にアスタリスクを付けない。
文字列定数は、@を前に付け、”(ダブルクォテーション)でくくって書く。

name=@”Masayuki”;

アスタリスク付きの変数は、データを保持するのではなく、データへのポインタ(データのメモリ上の住所)を持つことを意味する。ポインタはデータを指し示すデータだ。

オブジェクトのメソッドを呼び出すためには、[ ]の中にオブジェクトをメソッドを記述する。

[オブジェクト メソッド];

変数(戻り値)=[オブジェクト メソッド];

int size=[name length];

引数を1つもつメソッドは、:(コロン)が付く。

int result=[name compare: @”Takeko”];

引数が2個以上あるメソッドであれば、キーワードと:を置いて、2番目以降の引数の型と引数の名前を指定する。

[オブジェクト メソッド名];

[オブジェクト メソッド名: (引数の型) 引数名];

[オブジェクト メソッド名:(引数1の型) 引数名1 キーワード名: (引数2の型) 引数名2];

プログラムの実行結果を確認するには、NSLog関数を用いる。

NSLog(@”文字列のサイズは %d です。”, size);

表示文字列中に指定する変数がオブジェクトであれば、%@を用いる。

NSLog(@”名前は %@ です。”, name);