合間をみながらiPhone開発の勉強をしていたんだけど、Windowsやwebの開発とは また違う難しさがあって慣れるのに時間がかかってしまった。 ようやく光が見えてきたので、Windows(C#)開発との違いをまとめてみることにした。
今後iPhoneの開発を初めようという人の参考になれば。そんな人はそんな多くはないかな。
言語がObjective-Cである
あたり前感が強いのであまり強調する必要もないんだけど。
言語仕様そのもの、というかできる事は、Objective-CもC#とは大差はないので、文法の違いが吸収できればそんな難しい代物はない。それに、C++やJavaより覚える事は少ないし。ただ、手間取るのはObjective-Cのマニュアルに記述されている用語かもしれない。
SmallTalkから派生した言語だから
もともとObjective-CはSmallTalk寄りの言語だから、用語もSmallTalkから引用していて、スーパークラス(=基底クラス)とか、メソッド(=メンバ関数)なんて言葉が登場する。そのあたりは他のC言語から派生した言語とは大きく異なるところ。
文法面でも@interfaceは、C#でいうインターフェイスではなく、クラス定義を宣言していたりするので、このあたりが混乱するかもしれない(サンプルコードを読めば、すぐに理解できるけど)
C#でいうインターフェイスは、Objective-Cではプロトコルと言う。私も最初は「なんでプロトコルが出てくるの?」と疑問符を浮べながらマニュアルを読んでたし。
あと、自分自身のオブジェクトを差すのはthisじゃなくてselfだったり、スーパークラスはbaseじゃなくてsuperだったりして、微妙に異なる。
忘れちゃいけないメモリ管理
そうそう、大事な事を思いだした。
メモリー管理の話。最近の言語(環境)はGC(ガベージコレクション)が使えて当たり前。メモリなんて確保したら、開放しなくても問題ない事がほとんど。もちろんObjective-Cでも文法上はCGは使えるんだけど、残念ながらiPhoneの開発ではGCは使えない。えー、って感じだけど、こういったデバイスじゃメモリ制限がきついのは、よくある事なので諦めるしかないね。
言語(とその周辺)に関しては以上かな。