* 初Objective-C
せっかくMacを所持しているのでObjective-Cに挑戦!
* 参考本
XcodeによるObjective-C入門 | |
毎日コミュニケーションズ 2010-01-23 売り上げランキング : 7461 おすすめ平均 |
* コード
Xcodeというツールを使用してコードを作成。っていうか勝手にできた。
JavaのアプリケーションをWinで開発をしていると
今さらっと調べてみたがeclipseでObjective-Cは使えないみたい。
で、↓はコードです。
#import <Foundation/Foundation.h> int main (int argc, const char * argv[]) { NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init]; // insert code here... NSLog(@"Hello, World!"); [pool drain]; return 0; }
* 解説
** import
#import <Foundation/Foundation.h>
この部分はJavaのimportと似ているかも。
詳細に解説をすると・・・
#import <フレームワーク名/ヘッダーファイル名>
となります。
*** 自作のヘッダーファイルの場合
#import "hoge.h"
となる。
** NSAutoreleasePool
NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init];
・
・
・
[pool drain];
これは・・・正直よくは分かっていない。
色々調べているとメモリー管理に関係するみたい。
これを宣言することで変数名poolにオブジェクトのメモリーを確保するっていう意味なのかな・・・?
自信が無い。
最後の行でそのメモリー上に確保したオブジェクトを解放する。
allocってなに?(←これほんとうに???状態)
今の俺の想像だけど・・・
– NSAutoreleasePoolクラス(NSObjectクラスをimportしているのでallocを呼べる)のalloc関数を呼ぶ。
– よんだその結果を更にinit関数(恐らく初期化関数?)をよび変数poolに代入。
かな。
で、最後のは・・・
– 変数名poolはNSAutoreleasePoolクラス型なのでそのクラスのdrain関数を呼びメモリーを解放
かな。
本当「かな」ってしか言えないな〜。
** コメント
// insert code here...
この箇所はコメントになり、コンパイル時には無視される。
他には・・・
/*
複数行コメント
*/
というのもある。
** 出力
NSLog(@"Hello, World!");
コンソールに出力するだけのプログラムなので文字列を出力する箇所です。
引数に文字列みたいなのを渡している。
@”文字”とすることでNSStringオブジェクトとして扱われる。
** 戻り値
このプラグラムの場合戻り値を受け取るようになっている(intの部分が“int型の戻り値を受け取ります”ということになる)。
* 所感
聞いた事はあっても実際に自分でコードを書いたのは初。
まだ「???」状態です。
こればかりは徐々に進めていく中で解決できるようにしていきたい。
Leave a reply