レベルアップ Objective-C (Software Design plus)
』
概要
Objective-Cプログラミング中級者以上を対象に、Xcodeの応用的な使い方やユニットテスト、バージョン管理など開発する上で利用する様々な周辺事情を横断的にザーッと解説してくれます。説明が非常にわかりやすく、また読みやすく読んでいて飽きません。この手の本は、いろいろ調べながら普段学んできたことの整理と欠けている部分を補うために、定期的に読むと良いなぁと思いました。
本書の構成は大きく以下の3つに分けられます。
- Xcodeに関すること
- データ操作に関すること
- メモリ管理とマルチスレッドに関すること
Xcodeに関することを扱う部分ではナビゲータやユニットテスト(標準でできる**TestsなどのTargetの使い方)など、今まで面倒で触れていなかったところなどが本当にさらっと解説されていてその軽さが、読みやすく身近に感じることが出来ました。データ操作に関する部分は新しい数字リテラルの説明も応用を含めてありましたし、iCloudでのファイル連携が結構細かく紹介されているのでリファレンスとして使えそうです。マルチスレッドに関しては基本的なところが触れられているのみですが、その基本が強力で、それをベースに応用がし易いと思いました。
中級といいますが、「中級未満」と感じる人にとってちょうどよい内容かなと思いました。説明がわかりやすく、一番大事なところを抑えているのでそこから発展させやすいと思います。個人的には単純ですがXcodeの使いこなし部分で得ることが多かったです。
個人的に学んだところ
- NSLogはコストがかかるのでできるだけBreakPointで置き換えられるところは置き換えたほうが良い(NSLogを入れることで本体プロジェクトの実行速度などに影響してしまう)。BreakPointを編集することでログを出したり、ブレークポイントでストップしないにすることもできる(Automatically continue after evaluating)。 p.74周辺
- 標準の***Tests Targetでユニットテストを行う方法の解説。 _p.91から_
- NSDateの
descriptionWithLocale:
メソッド。使ってなかった。。 p.135 - NSDateの
dateByAddingTimeInterval:
メソッド。今まで無駄にNSDateComponentsを使って日時の計算してた。。_p.136 - CoreFoundationとのブリッジの解説。__bridge_transferとか__bridge_retainedとかの解説。この辺り、あまり触れることもないので、勉強してなかった。CoreFoundationオブジェクトからObjective-Cオブジェクトにキャストするときは、__bridge_transferでARCの管理下に置くことができる。その逆は__bridge_retainedでARCの管理下から外される。この場合ちゃんと開放が必要(例:
CFRelease(str)
)。p.301周辺 - dispatch_groupの使い方説明。dispatch_groupってシンプルだったなぁ。なんかこれ知ってて、使い方も想定してたんだけど、なぜか面倒で手を付けてなかった。groupを作って(
dispatch_group_create()
)、そのグループに追加(dispatch_group_async(group,queue,^{})
)、その次に、グループの処理が全部終わったら実行されるdispatch_group_wait(group, DISPATCH_TIME_FOREVER)
などを書いておけばおけ。 p.340 - @synchronizedの使い方。複数スレッドで実行する際に、例えばitemsに対して同期で処理をしたいと思ったら、
@synchronized(items){itemsに対する処理}
と書けば良い。itemsに関する処理は同期で行われる。@synchronizedも避けてきてたなぁ。p.347