注意: この記事は1年以上前に掲載されたものです。情報が古い場合がありますのでお気を付け下さい。
iOSのアプリ開発において、Objective-Cではブロック、Swiftではクロージャーが往々にして使われる。これらはそのメソッド内しか使わないような関数のコールバック処理などで効力を発揮するものであり、是非とも覚えておきたいものである。
Objective-Cのブロック
Objective-C ((正確にはC言語のアップル拡張機能なのだが、この項目ではObjective-Cの機能として扱う)) では、ブロックとして表現することができる。
例えば、処理中には以下のような書き方ができる。
int (^getMax)(int, int) = ^(int a, int b) {
if (a > b) {
return a;
} else {
return b;
}
};
上記のコードは以下のようにして呼び出すことができる。
getMax(3, 5);
この場合は、5がreturnされる。
なお、Objective-Cにおいては、その言語仕様上、型の指定などでかなり複雑になるので要注意である。
Swiftのクロージャー
Swiftでは、ブロックの代わりにクロージャーが実装されているので、それを利用することで実現可能である。
Objective-Cで書かれたコードは、以下のように表現できる。
let getMax = { (_ a: Int, _ b: Int) -> Int in
if a > b {
return a
} else {
return b
}
}
この場合も、getMax(3, 5)
で5がreturnされる。
最近ではmacOSやiOSのプログラムではブロックやクロージャーを多用する傾向もあるので、是非とも使いこなしていきたいものである。
ウェブマスター。本ブログでITを中心にいろいろな情報や意見などを提供しています。主にスマートフォン向けアプリやウェブアプリの開発を携わっています。ご用の方はコメントかコンタクトフォームにて。