ラベル GCD の投稿を表示しています。 すべての投稿を表示
ラベル GCD の投稿を表示しています。 すべての投稿を表示

2010/11/29

Objective-C上でブロックオブジェクトによる高階関数を用いてソートする方法について

iOS 4.0以降 (Mac OS Xなら10.6以降) で利用可能になったブロックオブジェクトは他の言語でのクロージャに相当するものです。ブロックオブジェクトはC, C++, Objective-Cで利用可能であり、Appleの並列実行アーキテクチャGrand Central Dispatchにおける基盤要素にもなっています。

ブロックオブジェクトはスタック上に生成されるため、copyによってヒープに移動させて破棄されないようにする必要があります (そして、使用後に破棄されるようにするためにautoreleaseさせる必要があります)。しかし、その点に注意さえすれば戻り値をブロックオブジェクトにした高階関数を利用することができます。

この記事ではObjective-Cにおいて、ブロックオブジェクトで高階関数を用いることで比較用のブロックオブジェクトを作成し、それを用いてオブジェクトのソートを行う方法を紹介します。