iOS 4.0以降 (Mac OS Xなら10.6以降) で利用可能になったブロックオブジェクトは他の言語でのクロージャに相当するものです。ブロックオブジェクトはC, C++, Objective-Cで利用可能であり、Appleの並列実行アーキテクチャGrand Central Dispatchにおける基盤要素にもなっています。
ブロックオブジェクトはスタック上に生成されるため、copyによってヒープに移動させて破棄されないようにする必要があります (そして、使用後に破棄されるようにするためにautoreleaseさせる必要があります)。しかし、その点に注意さえすれば戻り値をブロックオブジェクトにした高階関数を利用することができます。
この記事ではObjective-Cにおいて、ブロックオブジェクトで高階関数を用いることで比較用のブロックオブジェクトを作成し、それを用いてオブジェクトのソートを行う方法を紹介します。