Objective-C 「再入門」と書いて再び入門!
ちょっと前にお勉強しようと思って挫折した iOS + Objective-C を次の会社で使うかも(?)しれないので再度お勉強します。
で、覚えられないのでしょうもないコードをつらつら書きます。(誤字があったりしたらごめんなさい)
あと今使ってる Wordpress のプラグインだとシンタックスハイライトが効かなそうなんだけど、誰か何かおすすめ教えてください(´・ω・`)
WP-CODEBOXというプラグインを発見しました!
文字列データ
//自分で作って自分で使って自分でリリース!
NSString *str = [[NSString alloc] initWithString:@"ほげほげ"];
//処理
[release str]
//オートリリースを1行で!
NSString *str = [[[NSString alloc] initWithString:@"もげもげ"] autorelease];
//処理
//もっと短く!
NSString *str = [NSString stringWithString:@"おーとりりーす"];
//処理
文字データの削除や追加は NSMutableString を使うらしい
php の sprintf 的なあれ
文字列 + ◯◯
//string + int
int score = 100;
NSString *str =
[NSString stringWithFormat:@"あなたは、%d点です", score];
NSLog(@"%@", str);//あなたは、100点です
//string + float
float tmp = 36.5;
NSString *str =
[NSString stringWithFormat:@"体温は、%f度です", tmp];
NSLog(@"%@", str);//体温は、36.500000度です
//string + float(小数点以下一桁)
NSString *str =
[NSString stringWithFormat:@"体温は、%.1f度です", tmp];//%.1fと書くらしい
NSLog(@"%@", str);//体温は、36.5度です
//これにのっとって %2d とかやれば整数の桁を省略できるかと思ったらできなかった
//string + string
NSString *name =
[NSString stringWithString:@"かみぴー"];
NSString *str =
[NSString stringWithFormat:@"私の名前は、%@です", name];
NSLog(@"%@", str);//私の名前は、かみぴーです
Objective-Cで数値から文字列への変換、文字列から数値への変換 - ugon105の日記
配列
普通に格納
NSArray *arr = [NSArray arrayWithObjects: @"a", @"b", @"c", nil];
NSLog(@"%@", arr);
//
最後に格納する nil がないとエラー
NSArray *arr = [NSArray arrayWithObjects: @"a", @"b", @"c"];
NSLog(@"%@", arr);
//Thread 1: Program received signal: "EXC_BAD_ACCESS"
配列の個数
NSArray *arr =
[NSArray arrayWithObjects: @"A", @"B", @"C", @"D", nil];
NSLog(@"%d", arr.count);//4
番号指定で呼び出す
NSArray *arr =
[NSArray arrayWithObjects: @"A", @"B", @"C", @"D", nil];
NSLog(@"%@", [arr objectAtIndex:0]);//A
NSLog(@"%@", [arr objectAtIndex:1]);//B
追加、削除は NSMutableArray を使うらしい
phpでいう連想配列的な
普通に格納
NSDictionary *dict = [NSDictionary dictionaryWithObjectsAndKeys:
@"kamip", @"name",
@"30", @"age",
@"kanagawa", @"address",
nil];
NSlog(@"%@", dict);//{address = kanagawa; age = 30; name = kamip;}
値、キー、値、キー、値、キー、値、キー、...,nil でセットする
キー、値を全て調べる
NSDictionary *dict = [NSDictionary dictionaryWithObjectsAndKeys:
@"kamip", @"name",
@"30", @"age",
@"kanagawa", @"address",
nil];
NSLog(@"%@", dict.allKeys);//{age, name, address}
NSLog(@"%@", dict.allValues);//{30, kamip, kanagawa}
キーワードから読み出す
NSDictionary *dict = [NSDictionary dictionaryWithObjectsAndKeys:
@"kamip", @"name",
@"30", @"age",
@"kanagawa", @"address",
nil];
NSLog(@"%@", [dict objectForKey:@"name"]);//kamip
NSLog(@"%@", [dict objectForKey:@"age"]);//30
NSLog(@"%@", [dict objectForKey:@"address"]);//kanagawa
なんかこう関数なのかプロパティなのか...
if文!
文字列比較
NSString *a = [NSString stringWithString:@"aaa"];
NSString *b = [NSString stringWithString:@"aaa"];
if( a == b ){
NSLog(@"%@", @"同じです");
} else {
NSLog(@"%@", @"異なります");
}
//同じです
文字列を違う方法で作った場合の比較
NSString *a = [NSString stringWithString:@"aaa"];
NSString *b = [NSString stringWithFormat:@"%@", @"aaa"];
if( a == b ){
NSLog(@"%@", @"同じです");
} else {
NSLog(@"%@", @"異なります");
}
//異なります
作り方が違うとアドレスが異なる?作り方が同じだとアドレスが一緒?ん??
NSString *a = [NSString stringWithString:@"aaa"];
NSString *b = [NSString stringWithFormat:@"%@", @"aaa"];
if( [a isEqual:b] ){
NSLog(@"%@", @"同じです");
} else {
NSLog(@"%@", @"異なります");
}
//同じです
Java の String と似た感じ?
Switch文!
int i = 5;
switch(i){
case 1:
NSLog(@"%@", @"1やん");
break;
case 3:
NSLog(@"%@", @"3やん");
break;
case 5:
NSLog(@"%@", @"5やん");
break;
default:
NSLog(@"%@", @"デフォルトやん");
}
//5やん
普通!
while文
while(条件式){
//処理
}
普通す[php]ng="objc" line="N" colla="+">
for(int i[/php]< 10; i++){
//処理
}
普通なので(ry
まとめ
配列・連想配列の書き方とか[]の使い方とか気持ち悪いけど、whileやらforやらは他の言語とだいたい同じ。メモリの管理は autorelase は推奨されていないようなんだけど、じゃあなんで存在しているの?とか思いつつ、次はクラスのことを勉強しよう。
ちなみに「よくわかる iPhoneアプリ開発の教科書」を参考にしています。これで分からなかった部分は、前に購入した「詳解 Objective-C 2.0」を参照しながら進めていくつもり。
なんかサンプルとかいきなり見たほうが早いかも?とか思ったりもするけど、せっかく時間あるし、地道にやろうかな。
参考書
詳解Objective‐C 2.0/荻原剛志 |
【送料無料】よくわかるiPhoneアプリ開発の教科書 |