ブログ@kaorun55

HoloLensやKinectなどのDepthセンサーを中心に書いています。

iPhoneアプリ開発記(14):読了・詳解 Objective-C 改訂版

詳解 Objective-C 2.0 改訂版

詳解 Objective-C 2.0 改訂版

流し読みしました。
改訂されてない版は読んでないので比較はできませぬ。あしからず。


で、ざっと感想など

確かに初心者向けまたは最初の一冊ではない

構文

  • C++の構文が分かれば特に問題ない
    • const教について調べないと
      • immutableとmutableのクラスで分けるのかな?
        • そういう意味では、mutableはわざわざクラス名にmutableとつけなければいけないので、デフォルトconst付きのイメージでいいのかな
  • ポインタベース
  • セレクタがよくわからん
  • メッセージ式やメソッドの書き方は慣れれば問題ない
  • @implementation ~ @endで書くときれいになると読んだことあるが、確かにそう感じた
  • Cとの使い分けは速度面。メッセージ式は遅いらしい
    • 正直、Obj-CとCの混合は読みづらいかも。慣れの問題?
  • メソッドは、.mにあるもののうち、.hに書いたものだけpublicになるようなので、.hを見れば公開メソッドが一覧できるという意味では分かりやすい
  • 文字列が@""なのが違和感だったが、C#Unicodeも@""だった
  • @protocolもよくわからんが、Javaとかのinterfaceだとかmixin的な扱いかな?

メモリ管理

  • allocでメモリ確保、initで初期化(コンストラクト)
  • 参照カウンタ方式なので、allocしたらreleaseする
    • releaseで参照カウンタを1減らす。増やすときはretain
  • Obj-C 2.0 には GC があるにはあるが、MacのみでiOSには実装されていないらしい
  • iOSで自動解放の恩恵にあずかるにはautorelease

ブロックオブジェクト

  • 初めて聞いた
  • Max OS X 10.6(Snow Leopard)およびiOS 4.0以降で利用可能
  • Obj-Cではなく、Cの拡張
  • LLVM(Low Level Virtual Machine)の成果
  • 関数ポインタの強化版?

Objective-CXcodeを使ってみての感想

  • 言語と環境に対する慣れを考えても、今のところVisula C++MFCの生産性と同等以下で、よくこれであれだけのアプリをつくってるなぁというのが正直なところ
  • Objective-C++でどのくらい変わるか試したい

まとめ

よくある書評通り、最初に読む本ではないと思うけど、ある程度分かってきたら知りたくなる言語的な情報がびっしり。
先日までいくつかサンプルアプリを作って、構文自体は大体分かったけど、内部構造や文化的な背景は全然知らないので、その点でとても役に立った。