*このページについて [#v6c0967b] 普段、cocos2d-xやadobe airなど、クロスプラットフォームのフレームワークを使っているため、たまにObjective-Cを使う場面でなかなか文法などを思い出せないときがあります。そんなときのために、Objective-C固有の文法などをまとめていっています。 Objective-Cは基本的な文法はC、C++、Javaなどと同じため、それらと異なる部分を抜き出して書いています。また、上記のように他言語を使うことが多く、Objective-Cでがっつり開発することはないため、各々の項目についての詳しい説明は省いています。 *基本 [#n4f274d4] **文字列 [#c7733e7a] 引用符と共に最初に「@」をつけるとNSStringという型になります。基本的に文字列はこれを使います。 NSString *s = @"これはテスト"; **ログ出力 [#lc67acc8] ログ出力はNSLogを使います。可変引数をとり、printfなどと同様のフォーマットが使えます。 NSLog(@"Hello %d %d",10,20); 結果 Hello 10 20 *クラス関連 [#f9e052ac] **クラス定義 [#a5d1d8ae] クラス定義は「@interface クラス名:親クラス」とします。 @interface TestClass:NSObject{ // プロパティ定義など } // プロトタイプ宣言など @end NSObjectは全てのクラスの元となるクラスなので、継承させるべき特定のクラスがないなら、これを継承させておくと便利です。 **インスタンス変数の定義 [#i9be9d10] 「@interface」で囲まれている中で定義します。 @interface TestClass:NSObject{ @public int a; @private int b; } @end 「public」「protected」「private」などのアクセス制限が使えます。 **プロパティ定義 [#x794a50f] 「@property」を使うと、先頭に「_」(アンダーバー)がついたプライベート変数が定義され、同時にsetter、getterも定義されます。 @property int a,b; とすると、 @private int _a, _b; という変数が定義され、setter、getterも定義されるので、ドット記法でプロパティにアクセスできるようになります。 instance.a = 1 instance.b = instance.a といった記法が可能になります。 「@property」で「readonly」を指定して読み取り専用変数にしたりも出来ます。 また、よく使われる「atomic/nonatimic」はスレッドセーフかどうかの違いです。 他にstrongは強い参照(参照が他で消されてもデータを保持)、copyはオブジェクトのコピーをとって保持(参照渡しではなく、実体が渡される感じ)します。 **メソッド定義 [#r746ad6d]