少しずつレベルアップを目指しつつ勉強用メモとして残しておきます。
まず Mac OS X のコンソールアプリケーションを作ってみる
(Objective-Cのクラスを利用する)
環境 : Mac OS X 10.7 Lion
XCode : 4.3
※ここでいきなりですが, Objective-Cには, GCがないといわれていましたが, OS X のいつごろからかついています。iOS は 5の段階ではまだないようです。
もうひとつ ARCというのがあります Automatic Release Connection というやつですが
変数を扱うときに, retain - release というセットをいれて, インスタンスの参照をカウントしていましたが -> これの説明は別の機会に。
iPhoneの開発本などを買って( ちょっと古いやつとか ) サンプルを入力してはい、Buildしようとしたら, [tmp release] で警告 dealloc なんてないぜとかいうのはこの ARCのおかげです。iOS5 から標準でこの ARCがついたみたいです。コンパイラ設定から外せますが。
早速コンソールアプリを作ってみましょう。
●まず Hello World!
XCode を開いて, "Create Project" -> Mac OS X -> Application -> Command Line Toolを 選択します。
いろいろ名前を入れるところがでてきます。
Product Name : いわゆるプロジェクトの名前 ここではConsoleTestとしました
Company Identifier : Javaでいうトップのnamespace 自分のURLとかを逆順に入れておく
私の場合 com.atmarkplant かな
Type : Foundation
チェックを入れる Use Automatic Reference Counting
このプロジェクトのフォルダを作成する場所を選びます。 別にどこでもいいです。
プロジェクトを作成すると, 早速 Hello World!のプログラムが完成しているようです。
main.m には すでにmain 関数が書いてあります。
左上にある Run という→のボタンを押すとBuild と実行です。
実行すると, 右下の方に実行結果が表示されます。これはNSLog の効果です。
プログラムはぱっと見た感じ Cです。ただのCです。 もちろんこのままC like に書き続けることもできます。
#import <Foundation/Foundation.h>
int main(int argc, const char * argv[])
{
@autoreleasepool {
NSLog(@"Hello World!");
}
return 0;
}
ですが, Objective-Cのクラスを書きます。
● クラスを書く
ConsoleTest フォルダを右クリック -> New File -> Mac OS X -> Objective-C Class
を選択します。名前は TestClass とでもしておきます。
2つのファイルが作成されました。
TestClass.m TestClass.h です。
クラスを作成するとこの 2つのファイルが作成されます。
TestClass.h : クラス定義用
TestClass.m : クラスの実装用
とざっくりいうとこんな感じです。今回は中身の説明はしません。
早速必要なことを書いていきます。
TestClass.h
#import <Foundation/Foundation.h>
@interface TestClass : NSObject
{
NSString *str;
int index;
BOOL testBool;
}
@property (nonatomic) NSString *str;
@property (readonly) int index;
@property BOOL testBool;
@end
TestClass.m
#import "TestClass.h"
@implementation TestClass
@synthesize str;
@synthesize index;
@synthesize testBool;
-(id)init
{
if ( self = [super init] )
{
str = [[NSString alloc]initWithString:@"Mayuyu"];
index = 2;
testBool = YES;
}
return self;
}
@end
これを利用するため main.mを書き換えましょう。
#import <Foundation/Foundation.h>
#import "TestClass.h"
int main(int argc, const char * argv[])
{
@autoreleasepool {
TestClass *tmp;
tmp = [[TestClass alloc] init];
NSLog(@"str %@", tmp.str);
// [tmp release];
}
return 0;
}
release はいりません。だってARC がついているから。
これで実行すると, Mayuyu というのが表示されるはずです。
0 件のコメント:
コメントを投稿