当時の理解不足で少しオーバーな表現や誤りが含まれていたのでその部分だけ修正しました私は普段はC++で開発をしています。そんな私がObjective-C(Foundation)を数日間勉強してみて思ったことを書いてみます。C++使いに読みやすいように、Objective-C用語もあえてC++っぽく呼んでいたりします。Objective-Cのコードを見たときに全く理解できずたじろぎました。関数(メソッド)の定義と呼び出し方がC++などとは全然違っていて初めて見る形式だったからです。勉強を始めてみて数時間でその不安は吹っ飛びました。C++からC#に移るよりも楽なんじゃないかと思うぐらいです。メソッドの定義と呼び出し方が分かればあとはそんなに難しくないはずです。C++やCと何が違うのかペースはC言語で、C言語の記述がそのまま使えます。その上でObjective-C特有の部分は@や[]で区別されたところに記述します。Foundationなどの機能を呼び出したい時にObjective-C特有の記述をします。Objective-C特有の記述で特徴的なのはメンバ関数の定義方法と呼び出し方法。具体的に書くと以下のように違います。ARC利用時は手動のreleaseは不要です}C++と呼び出し方は違いますが、全く違うことをやっているわけではないのがわかると思います。違うのは記述方法だけでなくてメンバ関数が呼び出されるメカニズムもです。C++だとコンパイル時に飛び先のアドレスが解決されますが、Objective-Cだと実行時に解決します。そのまま使うと関数呼び出しのオーバーヘッドが大きいので注意。詳しくないけどセレクタを使った回避策もあるらしい。細かくて回数が莫大なループ内で呼び出す要な場合は回避したほうがいいかもしれません。←iOSアプリ開発においては無視できる程度のオーバーヘッドであることが大半です(2019/12/16追記)基本的な考え方はC++と同じです。おまけにメンバ変数にアクセスするためのメンバ関数(GetterやSetter)を自動生成してくれちゃう機能まであり、C++よりも便利な記述が言語的に備わっています。クリティカルセクションの制御なんかも言語レベルでサポートされています。フレームワークについてObjective-CはMacOSXやiOSのアプリをつくるのに主に使用されています。touch)というフレームワークがあり、Objective-Cプログラミングではそれを使います。Frameworkのようなものに当たるでしょうか。コーディングに密接に絡んでくるのがFoundationと呼ばれるもので、C言語で言う標準関数のようなものがここにある感じです。この中のNSObjectっていうクラスがかなり重要でObjective-Cプログラミングの要。インスタンスの確保・開放などはこのクラスに実装されている機能を使うことになります。私はいまこのあたりの使い方とiOSのUI用のクラス(UIButtonなど)の勉強中です。言語の違いは大した障害とならない感触です。純粋に新しいフレームワークの使い方を覚えていくことに比重を置くことになると思います。今年のiOS...2017-11-12iOSアプリエンジニアになってからの1年4ヶ月を振り返る今の会社に入社してiOSアプリエンジニアとなってから1年4ヶ月く...2010-11-10Linuxを使ってみてiMacにVirtualBoxを入れてUbuntuを動かしています。WWDC中のランチとルートビア事情2018年の自分を振り返る2年3ヶ月働いた会社を退職しました月別アーカイブはてなブログをはじめよう!rikusoudaさんは、はてなブログを使っています。ブログを報告するスターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。