Objective-Cって何 [コンピュータ言語]

暗い話ばかりでは、身にこたえますので、少し話題を変えてアップルのコンピュータ言語についてに変えました。
Macを買えばもれなく付いて来るXcode,Interface Builder。これを生業にしている人もいるでしょうけれども、私の場合、Objective-Cの解説という訳でもなく、単なる思い付きで、だらだらと述べるだけですので、興味の無い方は見ない方が良い程度のものです。
解説書ならいっぱい有りますし、ネットで探してもたくさん有ります。

調べていたらXcodeは、バージョンが4にアップされていて最新のサンプルコードはコンパイルできない事を知りました。このバージョンは有料で、600円(会員だけ?)。安いとは言え、売り物を作る気はなく、突っ込んで行くと悩まされそうなので、止めました。
アップルのやり方はいつでもそうです。そうゆう意味ではウインドウズの方が優しいのかも知れません。
だいいちObjective-Cはマックでなければ使い道はなく、そうゆう意味ではマイナーな言語です。
JAVAやC/C++とは、一線を越えます。
今携帯はiPhoneが発売されて以来スマートフォンに変わって来ました。アプリソフトで言えば、iPhone,iPadが群を抜いています。
今回のバーションアップは、このアプリケーション開発のためのものと判断しましたが、私には大分敷居が高い事が分かりました。実に圧巻です。

しばらく使ってなかったので、使用が様変わりしてしまったようです。無償版バージョンは、Xcode3.2.6でSDKがiOS SDKになっていました。一応会員なのでダウンロードしました。今インストール中ですがMacProなのに、時間がかかります。何がどう変わったのか早く見たい。

見たら殆ど変わりませんが、サンプルコードの中には、SDKがiOS SDKでないとやはり不具合がでるみたいです。

さてObjective-Cの構文ですが、C言語の拡張または延長線上にあるので、C言語の理解は必要です。
また土台(Foundation)が、unixのDarwinなので、ディレクトリの概念も理解しておかなければなりません。ダーウィンは殆どがC言語でできていて、ターミナルコマンドもC言語で出来ています。ではC言語との違いはと言えば、何と言ってもコンパイラ指示子@interface,@implement,@endではないでしょうか。
@で始まるものには他に
@public,
@protected,
@private,
@package,
@class,
@selector
@"…"等などC言語ではありません。つまり使える記号をふんだんに使った言語なのです。
次に [レシーバ(obj) メソッド:argument(論拠?)] という通信手段です。
C言語では[ ]は、配列にしか使いませんが、空白を使う事に依ってコンパイラーは区別できます。
しかし、この空白はCでも使っています。例として#define DELAY 2とすれば、DELAYに2が代入されます。だったら最初から2を使えば良いかと言うと使い物になるソフトとなるとコードが長くなりますし、どこかでもう一つ2がでてくれば、どっちの2か後で迷ってしまいます。

対で使う記号には他に、
< > は、主にインポートするヘッダーファイルを括る。
例:#import HTMLやXMLでも使われますが、意味合いが少し違って来ます。例えば、<head>…</head>のように、< >で内容を指定して更に細かく内容を指定して、最後に</>で終了した合図を送りますが、Objective-Cの場合読み込んだファイルを保持するだけです。共通して言える事は、< >の中の文字は表示されないとも言えます。 { } は、大構文で使われます。例として @interface MyObject : NSObject { } ちなみにHTMLの場合、使われる事はありません。</>があるからです。 ( )は、使われ方が色々です。 まずはメイン関数。例として、 int main(int argc, char *argv[]) { return NSApplicationMain(argc, (const char **) argv); } 次は型を指定する時。例として、 - (id)initWithFrame:(NSRect)frame {…} 後は、予約語と呼ばれる関数として、例としては、 if (…),for (…),while (…)… 最後に、C言語では自分が作った関数にも( )を使いますが、Objective-Cでは、NSであらかじめ用意した関数でしか使いません。例としては、 NSMakeRange(0,0) 特殊と言えば、関数の前に使われる-,+の記号があります。 +は、動的バインディング時にクラスのインスタンスを作成することらしいのですが、抽象的で分かりにくい概念です。-は他の関数と言う事でしょうか。System/Library/Frameworks/...framework/Headers/のヘッダーファイルを眺めていれば区別がはっきりするかも知れません。 後は何もしなくてもビルドすればwindowだけは立ち上がるということです。前のMac OS9迄はCode Warriarと言うコンパイラーソフトを買い、ウィンドウを立ち上げるだけでも大変でしたが、オブジェクト指向と叫ばれてどんなOSが出来るのかなあと思っていたら、こういう事だったのですね。 これだけ分かってプログラムが組めるかと言うと、ドレミファソラシドが引ける程度でしょうか。 もう一つ理解しなければならないものに、インターフェイスビルダーがありますが、これがなかなか参考書も無くビジュアルで分かり易いのかと思いきや、いざビルドすると失敗し場合、何処が悪いのか探すのが難しくなります。 ここでアップルが用意している簡単なサンプルコードで、説明したいと思います。 TextInputView.png ここでは作られたコードは、ControllerとFadingTextViewしかありません。 MainMenu.xibはこんな感じです。 MainMenu1.png MainMenu2.pngCConnection1.png TextInputView2.png WConnection.png こんな感じでしょうか、早速ビルドしてどうなるのか試してみます。 Apple1.png screen1.png ここでは、最初のMainMenuに無かったSpecial Characters…が追加されています。これを選択してみると文字ビューアが出て来て2200番台からの数学演算子がでて来ます。それを入力すると 結果.png こうなりました。 でも可笑しいですねえ。Special Charactersは、何処から出て来たのでしょうか。いくらコードを追っても無いし、inspectorで探してみてもありません。これは成功した例なので、どこかに表示する仕組みがある訳ですが、このように参考書もないので隠れたところの動きは理解できないし、間違いも探しづらいのです。 誰か分かる人が居れば教えてほしいのですが、このサンプルは単純な方ですがここ迄です。
nice!(0)  コメント(0)  トラックバック(0) 
共通テーマ:趣味・カルチャー

nice! 0

コメント 0

コメントを書く

お名前:
URL:
コメント:
画像認証:
下の画像に表示されている文字を入力してください。

トラックバック 0

メルトダウンディレクトリの概念 ブログトップ

この広告は前回の更新から一定期間経過したブログに表示されています。更新すると自動で解除されます。