初めてのプロジェクト作成

XCODEではじめるObjective-C 著者:大津真 より抜粋

プロジェクトのビルド方法プロジェクトを新規作成して、適当な名前のプロジェクトを作成し、左上のRunボタンをクリックするとOutput画面にHello,World!が表示される。
これはmain.mにプロジェクトを作成するとサンプルで書いてあるコードを実行した事になる。

#import
int main(int argc,const char * argv[])
{
@autoreleasepool{
//inser code here....
NSLog(@"Hello,World!");
}
return 0;
}

スキームについて
プログラムの実行、パフォーマンス分析、テスト、パッケージング等、処理に応じてまとめたもの。
現在のスキームを確認するにはスキームに表示されているHello Worldを選択して、Edit Schemeを選択する。

Objective-Cのメモリ管理オブジェクト指向言語ではオブジェクトを生成すると、メモリ上にその領域が確保されます。オブジェクトをどんどん作って行くと、メモリ領域をそれだけ圧迫されます。
いらなくなったオブジェクトは削除してメモリを開放する事をメモリの管理と呼ぶ。
メモリの管理ができてないと、アプリケーションが強制終了となり、メモリリークによる不具合が発生する。

メモリ管理方法手動による参照カウンタ方式、がベージコレクション、ARC(Auto Reference Counting)の3つの方法が使用できる。但しガベージコレクションOSX アプリケーションのみでiOSアプリケーションでは使えない。

ガベージコレクション:不要になったメモリ領域を定期的に回収して、利用可能な状態に戻す
参照カウンタ方式:
個々のインスタンスは参照カウンタ値を持っていて、初期値は「1」です。別のオブジェクトがインスタンスを所有する場合は[retain]メッセージを送ると参照カウンタがカウントアップされ、逆に不要になった場合は[release]をを送ると、カウントダウンされる。こうして最終的に、参照カウンタの値が「0」になると、インスタンスが開放される。ユーザが参照カウンタの上げ下げを行わないとメモりリークが生じる。

ガベージコレクションのオンオフ設定プロジェクト名をクリック-右に出てくるTARGETSより HelloWorldを選択-右にターゲット設定画面が出てくる-Build Settings/All|Combinedにして[Apple LLVM compiler3.0-Language]-Objective-C Garbage Collectionを[Required [-fobjc-gc-only]]に設定する

ARC:ガベージコレクションは速度の問題で、Xcode4.2以降ではサポートされなくなった。その代わりに出てきたのがARCで、これはいままで手動で行ってきた参照カウンタの管理を自動化する。
コンパイラがプログラムの内容を解析し、retain/releaseを切り替える。ARCはiOSでもOSXアプリでも使用できる。

ARCのオンオフ設定プロジェクト名をクリック-右に出てくるTARGETSより HelloWorldを選択-右にターゲット設定画面が出てくる-Build Settings/All|Combinedにして[Apple LLVM compiler3.0-Language]-Objective-C Automatic Reference Countingで設定する。

ARCを有効にした場合は64bitアプリケーションのみが作成可能で、32bitアプリケーションをビルドするとエラーになる

Xcodeで作成したプログラムのうちターミナルアプリケーションはターミナルで直接実行できる。
プログラムの場所:ビルド結果は
home-Library-Developer-Xcode-DerivedData-プロジェクト名
オブジェクトファイルは
Build-Products-Debug
に保存されている
Xcodeからこのフォルダを簡単に開くには、プロジェクトナビゲータで
Products-HelloWorldを右クリックし、Show in Finderを選択します。

ターミナルで実行cdコマンドでディレクトリを移動
/Users/o2/Livrary/Developer/Xcode/DerivedData/HelloWorld-bncapbsheisgkodxztakybivkxgo/Build/Products/Debug

./HelloWorld とタイプして実行する

2012-07-03 06:59:30.809 HelloWorld[7266:707] Hello, World!