Happy My Life

日常とか技術とか

iPhone開発前に知っておきたいこと(1)-言語について

Colourful Keyboard

合間をみながらiPhone開発の勉強をしていたんだけど、Windowsやwebの開発とは また違う難しさがあって慣れるのに時間がかかってしまった。 ようやく光が見えてきたので、Windows(C#)開発との違いをまとめてみることにした。

今後iPhoneの開発を初めようという人の参考になれば。そんな人はそんな多くはないかな。

言語がObjective-Cである

あたり前感が強いのであまり強調する必要もないんだけど。

言語仕様そのもの、というかできる事は、Objective-CC#とは大差はないので、文法の違いが吸収できればそんな難しい代物はない。それに、C++Javaより覚える事は少ないし。ただ、手間取るのはObjective-Cのマニュアルに記述されている用語かもしれない。

SmallTalkから派生した言語だから

もともとObjective-CSmallTalk寄りの言語だから、用語もSmallTalkから引用していて、スーパークラス(=基底クラス)とか、メソッド(=メンバ関数)なんて言葉が登場する。そのあたりは他のC言語から派生した言語とは大きく異なるところ。

文法面でも@interfaceは、C#でいうインターフェイスではなく、クラス定義を宣言していたりするので、このあたりが混乱するかもしれない(サンプルコードを読めば、すぐに理解できるけど)

C#でいうインターフェイスは、Objective-Cではプロトコルと言う。私も最初は「なんでプロトコルが出てくるの?」と疑問符を浮べながらマニュアルを読んでたし。

あと、自分自身のオブジェクトを差すのはthisじゃなくてselfだったり、スーパークラスはbaseじゃなくてsuperだったりして、微妙に異なる。

忘れちゃいけないメモリ管理

そうそう、大事な事を思いだした。

モリー管理の話。最近の言語(環境)はGC(ガベージコレクション)が使えて当たり前。メモリなんて確保したら、開放しなくても問題ない事がほとんど。もちろんObjective-Cでも文法上はCGは使えるんだけど、残念ながらiPhoneの開発ではGCは使えない。えー、って感じだけど、こういったデバイスじゃメモリ制限がきついのは、よくある事なので諦めるしかないね。

言語(とその周辺)に関しては以上かな。