iphone開発のためにGWにObjCをざっととおしてみたのだけどいざ作ろうとすると鳥頭にもほどがあるので備忘録。
参考:「→XcodeによるObjective-C入門」
とてもわかりやすかった。文字列、配列、クラスetc.. と基礎を通して書いてある。OSX用の話なのでそのまんまはいけませんがそれでも良書。
あと、→@ITの記事や、「最速基礎文法マスター」が流行ったときの記事も参考になりました。
→Objective-C 最速基礎文法マスター(by fn7の日記)
→ActionScript 3.0 基礎文法最速マスター(by 読書メモ+tips+日記)
で、以下メモ。
プロパティ、メソッド、定数
//プロパティ オブジェクト型は*ポインタが必要
//@privateで定義で private var myDate:Date;
NSDate * myDate;
NSString * myString;
NSLocale * myCurrentLocale;
//定数
//public static const HOGE:int = 2;
const int HOGE = 2;
//メソッド
//public function countNumber(count:int):int
-(int) countNumber :(int) count
{
count++;
//ローカル変数var result:int = count;
int result = count;
//trace(result); %d10進数 %f小数 %c1文字 %@ オブジェクトの内容
NSLog(@"%d", result);
return result;
}
//--------------------------------
//よみにくいメソッド 引数2つ
//public function application
//( application: UIApplication , didFinishLaunchingWithOptions( launchOptions: NSDictionary ) ): Boolean
- (BOOL)application: (UIApplication *)application didFinishLaunchingWithOptions: (NSDictionary *)launchOptions
{
//window.addSubview( viewController.view );
[window addSubview:viewController.view];
//window. makeKeyAndVisible();
[window makeKeyAndVisible];
return YES;
}
文字列
//変更可能な文字生成するオブジェクト
NSMutableString * moji;
//new NSMutableString(10); 10文字の領域を確保した変更可能な文字オブジェクトを生成
moji = [[NSMutableString alloc]initWithCapacity:10];
//moji = "foo" + "bar" + "30";
[moji appendString:@"foo"];
[moji appendString:@"bar"];
[moji appendFormat:@" %d",30];
NSLog(@"%@",moji);
//--------------------------------
//NSStringにあとで文字を追加したい場合
NSString * str1 = @"hoge";
NSString * str2 = [str1 stringByAppendingString:@"fuga"];
NSLog(@"%@",str2);
//--------------------------------
//文字列の等価の判定
NSString * strA = @"hoge";
NSString * strB = @"fuga";
if ([strA isEqualToString:strB])
{
NSLog(@"いっしょ");
}
else
{
NSLog(@"いっしょじゃない");
}
配列
//Cのint型の配列 var myArray = new Array();でもintだけ
int myArray[] = {1,31,5,6,80};
double sum = 0;
for (int i = 0; i < MAXNUM; i++) {
sum += myArray[i];
}
//--------------------------------
//ObjCの変更可能な配列
NSMutableArray * mutableArray;
//メモリ領域を確保して生成
mutableArray = [NSMutableArray arrayWithCapacity:5];
//push
[mutableArray addObject:@"one"];
[mutableArray addObject:@"two"];
[mutableArray addObject:@"three"];
[mutableArray addObject:@"four"];
[mutableArray addObject:@"five"];
//for each
for(NSString * str in mutableArray)
{
NSLog(@"%@",str);
}
インスタンス化とメモリ解放
//生成 myDate:Date = new Date(); NSDateComponents * myDate = [[NSDateComponents alloc]init]; //解放 [myDate release];
ポインタ
//なんでも参照渡しになるかんじ? int thisYear = 2009; int * pointerYear1;//メモリ上の場所を確保して変数を宣言 int * pointerYear2; //メモリ上の場所に変数thisYearをつっこむために&つきでわたす pointerYear1 = &thisYear; pointerYear2 = &thisYear; //おなじメモリ上のアドレスを見ているので変更するとpointerYear2も変更される *pointerYear1 = 2000;
ほかにもたくさん要素はあるけどざっくり念頭においとくために。
メモリ解放のところは、iphoneのほうの書籍にもうちょいこまかいことが書いてあったけど会社においてきたのであとで追記します。
勘違いしてるとこがあったらご指摘ください☆