2010年5月22日土曜日

NSObject

NSObject

クラスを初期化する


オブジェクトを生成し、コピーし、再割当する


クラスを特定する


クラスの機能をテストする


プロトコルの適合性をテストする


メソッドに関する情報を入手する


オブジェクトの種類を標記する


メッセージを送付する


メッセージを他オブジェクトに送る


メソッドをダイナミックに解決する


エラーを取り扱う


アーカイブする


NSObject Protocol

クラスを識別する


オブジェクトを識別し、比較する


参照カウンターを管理する


オブジェクトの継承、振る舞いと適合性をテストする

  • (BOOL)isKindOfClass:(Class)aClass  required method
  •       レシーバが与えられたクラスのインスタンスかまたはそのクラスから継承されたクラスなの場合YES、それ以外はNO。
  • – isMemberOfClass:  required method
  • (BOOL)respondsToSelector:(SEL)aSelector  required method
  •       レシーバが実装または継承したメソッドが指定されたメッセージを返せるかどうかをYES,NOで返す。
  •   ex.
  •         if ([oneValue respondsToSelector:@selector(mutableDeepCopy)]
  •        oneCopy = [oneValue mutableDeepCopy];

オブジェクトを記述する


メッセージを送る


割り当て領域の決定


プロキシーの識別

メソッドが検索できない・・・・

iPhone開発のデータベースにしようと、一所懸命作成してきましたが、なんとメソッド名をフルで入れると検索できない場合があることが判明しました。なんだろう....loadだけなら検索できたりするけど....

Objective-Cにおける高速列挙

if分に見慣れない構文
   if ( (id)oneObject in nib)
があったので、調べてみると、高速列挙という構文のようです。

高速列挙に関する解説は以下にあります。

CoCoaの素、Objective-Cを知ろう
(第5回 配列とループ処理を理解しよう)
http://www.atmarkit.co.jp/fcoding/articles/objc/05/objc05a.html


Objective-Cでは、C言語のいわゆる通常のforループのほかに、よりオブジェクティブに集合のループ処理を表現するために「列挙子(NSEnumerator)」という仕組みが用意されているそうです。

これを使った場合はコードがやや複雑となるため、高速列挙ということで、for文の構造として表記可能としたようです。

対象となるオブジェクトは、NSArray, NSDictionary,NSSet,NSHashTable, NSMapTable等のNSFastEnumerationプロトコルに準拠するオブジェクトだそうです。

ちなみに、高速列挙ではオブジェクトの変更はできず、変更すると例外が発生するそうです。



構文は次のように定義されています。

for ( Type newVariable in expression ) { stmts }
または
Type existingItem;
for ( existingItem in expression ) { stmts }




以下Appleの解説です。


Objective-C には、コレクションの内容を列挙できる言語機能が提供されています。構文は次のように定義されています。

for ( Type newVariable in expression ) { stmts }
または
Type existingItem;
for ( existingItem in expression ) { stmts }

どちらの場合も、expressionNSFastEnumerationプロトコルに準拠したオブジェクト、すなわち通常は配列または列挙子を生成します(CocoaコレクションクラスのNSArrayNSDictionaryNSSetはこのプロトコルを採用し、NSEnumeratorも同様に採用しています)。

他のオブジェクトのコレクションにアクセスできるインスタンスを持つクラスはすべて、NSFastEnumerationプロトコルを採用できます(NSFastEnumerationプロトコルの実装を参照)。

NSArrayNSSetの場合は、列挙は自身の内容が対象であることは明白です。

それ以外のクラスは、反復処理の対象のプロパティを明確にする必要があります。たとえばNSDictionary、およびCore DataクラスのNSManagedObjectModelは高速列挙に対応しており、NSDictionaryはそのキーを、NSManagedObjectModelはそのエンティティを列挙します。

高速列挙を使用する利点は次のようにいくつかあります。

NSEnumeratorを直接使うなどの手法よりもはるかに効率がよい。
構文が簡単である。
「安全」である。列挙子には変更防止の機能があるため、列挙中にコレクションを変更しようとすると例外が発生します。
反復中のオブジェクトの変更が禁止されているため、複数の列挙を同時に実行できます。

2010年5月20日木曜日

2Dグラフィクス関数


Creating a Dictionary Representation From a Geometric Primitive


Creating a Geometric Primitive From a Dictionary Representation


Creating a Geometric Primitive From Values

  • CGPointMake
  • CGRectMake(x, y, width, height)
  •  指定した座標と寸法の値を代入したCGRect構造体を返す。値の型はCGFloat。x,yはMacと異なり左上の座標となる。
  • CGSizeMake

Modifying Rectangles


Comparing Values


Checking for Membership


Getting Min, Mid, and Max Values


Getting Height and Width


Checking Rectangle Characteristics

2Dグラフィクスの構造体(型)

グラフィクス系の構造体には以下のものがあるようです。なお、ここにないCGFloatは、CPUが32bit/64bitかに応じてfloatかdoubleになる。

CGPoint

A structure that contains a point in a two-dimensional coordinate system.
struct CGPoint {
   CGFloat x;
   CGFloat y;
};
typedef struct CGPoint CGPoint;
Fields
x
The x-coordinate of the point.
y
The y-coordinate of the point.
Availability
  • Available in iPhone OS 2.0 and later.
Declared In
CGGeometry.h

CGRect

矩形の位置と寸法を含む構造体
struct CGRect {
   CGPoint origin;
   CGSize size;
};
typedef struct CGRect CGRect;
Fields
origin
CGPoint 構造体で、矩形の始点座業を示す。始点は矩形の左下の位置となるとAppleのリファレンスにあるが、左上かもしれない。
size
CGSize 構造体で、矩形の高さと幅を示す。
CGSize
A structure that contains width and height values.
struct CGSize {
   CGFloat width;
   CGFloat height;
};
typedef struct CGSize CGSize;
Fields
width
A width value.
height
A height value.
Availability
  • Available in iPhone OS 2.0 and later.
Declared In
CGGeometry.h

2010年5月19日水曜日

UIFont


任意のフォントの生成


システムフォントの生成

  • + (UIFont *)systemFontOfSize:(CGFloat)fontsize
  •  サイズを指定してシステムフォントオブジェクトを返す
  • + (UIFont *)boldSystemFontOfSize:(CGFloat)fontsize
  •   サイズを指定してボールドデザインのシステムフォントを返す
  • (UIFont *)italicSystemFontOfSize::(CGFloat)fontsize
  •   サイズを指定してイタリックデザインのシステムフォントを返す

可能なフォント名の取得


フォント名の属性の取得


フォントサイズの取得


システムフォント情報の取得