■コメント
// 一行の場合 /* 複数行の場合 */
■ステートメント
// 一行の場合 /* 複数行の場合 */
■ファイル
インターフェースファイル
.hの拡張子ファイルのもので、クラスの定義を記述する。
#import <Foundation/Foundation.h> @interface Animal:NSObject { id _name; } @property(copy, readwrite) NSString *_name; -(id) init:(NSString *)name;// initialize -(NSString *) cry: (NSString *)name;// instance method +(NSString *) getKind; // class method @end
実装ファイル
#import "Animal.h" @implementation Animal @synthesize _name; - (id) init: (id) name { [super init]; self._name = name; return self; } -(NSString *)cry: (NSString *)name{ return [NSString stringWithFormat:@"cry! from %@ to %@", self._name, name]; } +(NSString *)getKind{ return @"Animal"; } @end
コンストラクタというものはない。イニシャライズというのがそれに近い気がする。
■インポート
以下のように記述して外部ファイルをインポートする。
標準ライブラリのディレクトリから
#import <lib.h>
例えば以下のように記述する。
#import <UIKit/UIKit.h>
現在のディレクトリから
#import "filename.h"
PHPのrequire_onceのように、一度インポートされたら再度インポートされない。C言語のincludeとは、その点が異なる。
■コンパイラディレクティブ
宣言
クラスの宣言
@interface
クラスの実装
@implementation
プロトコル宣言
@protocol
上述の宣言の終了
@end
可視性
// 宣言したクラスのみ @private // 宣言したクラスとサブクラス @protected // すべてのクラス @public
指定しない場合はprotectedとなりsetterやgetterを使ってアクセスすることになる。
例外
以下のように記述して例外をキャッチする。
@try { // something } @catch (NSException *exception) { NSLog(@"main: Caught %@: %@", [exception name], [exception reason]); } @finally { // something }
また、以下のようにして例外をスローする。
NSException *exception = [NSException exceptionWithName:@"HogeException" reason:@"No, hogehoge!" userInfo:nil]; @throw exception;
他の場所で定義されたクラスの名前を宣言
@class
指定されたメソッドを識別するセレクタ
@selector(method)
指定された名前のプロトコル
@protocol(name)
指定された構造体をエンコードする文字列
@encode(spec)
指定されたクラスのインスタンスの内部データ構造
@defs(className)
NSStringオブジェクト
@"hogehoge"
1スレッドのみ実行可能なブロックの定義
@synchronized