Objective-C
第 4 版(2010-07-04 08:01:51 · akkun_choi)を表示しています。 最新版に戻る
C言語を拡張したもの
文字列
NSString* str = @"Hello World";
Ruby, PHPとの文字列操作比較
http://d.hatena.ne.jp/hetima/20061025/1161773698
デバッグ
NSLog(@"obj = %@", obj); // オブジェクトの場合 %@
foreach
NSArray *array = [NSArray arrayWithObjects:@"A", @"B", @"C", nil];
for (id i in array) {
//なんか処理
}
NSDictionary *dictionary = [NSDictionary dictionaryWithObjectsAndKeys:
@"value1", @"key1",
@"value2", @"key2",
@"value3", @"key3",
nil
];
// キーでループする場合
for (id i in [dictionary keyEnumerator]) {
// なんか処理
}
// 値でループする場合
for (id i in [dictionary objectEnumerator]) {
// なんか処理
}
enum
C言語にもあるんな。
typedef enum{
Left = -1,
Right = 1
} Direction;
// 自動的にintになる?
Blocks
Rubylist歓喜。こんなことができるらしい
http://blog.livedoor.jp/faulist/archives/1470672.html
http://blog.livedoor.jp/faulist/archives/1471218.html
instanceof
NSObjectが定義してる isKindOfClass を使う
if ([obj isKindOfClass:[NSString class]]){
...
メモリ管理
- allocしたらrelease、retainしたらrelease
- releaseの代わりにautoreleaseもあるよ
- 他の人が生成したやつには関わるな!
- @property(retain)は自動的にretain/releaseする
- delegateはretainするな。多くの場合循環参照になる
まだよくわかっていないこと
- @implementationにインスタンス変数は書けない?(なんか変数名競合した)
- intよりNSUInteger使った方がいいんだろうか
Google Objective-Cスタイルガイドのまとめ
http://www.textdrop.net/google-styleguide-ja/objcguide.xml
- インデントは2スペース
- 変数名、クラス名、メソッド名はCamelCase。クラス名は大文字開始
- hoge の setter は setHoge だが、getter は getHoge ではなく hoge
- クラスメンバ変数はアンダースコア(_)で終わること。myInstanceVariable_
- 定数名(#define、enum、constなローカル変数など)は小文字k開始のCamelCase。kConstValue
- @interfaceのコメントは必ず書く。パブリックメソッドについては機能、引数、戻り値、あらゆる副作用について説明する
- コメント中に変数名を入れる場合は |val| な感じで書く
- メンバ変数は @private にすべきだ
- イニシャライザを明確にする
- 0やnilに初期化するのは冗長
- プライベートメソッドとパブリックメソッドの区別はない
- 続きはあとで読む。。。
参考
最速マスター
http://d.hatena.ne.jp/fn7/20100203/1265207098
Google Objective-Cスタイルガイド 日本語訳
http://www.textdrop.net/google-styleguide-ja/objcguide.xml
履歴
タグ
「Objective-C」タグが付けられた単語
他の人の「Objective-C」
- 西小倉パンデイロの「Objective-C」西小倉事典僕が産まれた年に産まれた言語 当分はこれに注力してAndroidとかは 外注するという流れ。 これからObjective-Cを書くプログラマへ - Qiita …2014-03-12
- 九龍の「Objective-C」九龍的ヘブンズ・ドアー記事 Objective-C(オブジェクティブ シー)はプログラミング言語の一種。C言語をベースにSmalltalk型のオブジェクト指向機能を持たせた上位互換言…2011-02-24