[iPhone SDK] iOS 4で導入された Blocks とは

公開日: : 最終更新日:2010/09/14 iPad, iPhone ,

Game Center を試していると、たくさんの^ (Caret というらしい。自分はハットと覚えたが) が出てきて、違う言語のコードを読んでいるような気になるが、これは、iOS 4 で導入されたBlocks の構文だ。
Blocks はAppleがドキュメントを用意してくれているのだが、まだよく分かっていないのでWebを放浪しながら理解しようと試みてみる。
A Short Practical Guide to Blocks
Blocks Programming Topics

この記事はよかった。
Programming with C Blocks on Apple Devices
しかしBlocksひとつでこんなに長い説明が必要になるとは。

ブロックの定義の書き方

戻り値の型 (^ブロック名)(引数の型)

ブロックの実装の書き方

^(戻り値の型)(引数の型 引数名) {

};

実際には、

  • 返り値の型が返り値から分かる場合には、返り値の型を省略できる
  • 引数が無い場合は省略できる

というルールがあるので、^(void)(void) {}; と書くことはなく、^{}; となる。
これもよく見るパターンだ。
また、返り値の型は返り値から判断できるので、たいてい返り値の型は省略されるようだ。

ブロックはCの拡張とObjective-Cの拡張があるので、それもわかりづらさを助長している。
また、ブロックはスタック領域(自動変数の領域)にとられるので、何もしないとメモリが解放されてしまう。このため、Block_Copy したり、copy したりしないといけない。
これも記述的にかなりややこしくなる要因の一つだ。

例えばこんな感じで、ブロックを返す場合には copy して、後で解放されるようにautoreleaseもする必要があるようだ。

まだBlocksのことが載っている本は少ないと思うが、この本には一応数ページ載っていたので紹介。

Objective-C逆引きハンドブック
Objective-C逆引きハンドブック 林 晃

シーアンドアール研究所 2010-02-26
売り上げランキング : 6274

おすすめ平均 star
starついに出た日本語リファレンス
star初心者に優しくない内容

Amazonで詳しく見る by G-Tools

関連記事

[iOS SDK] Olympus Camera Kit で Pebble連携アプリを作ってみた

3月25日にOLYMPUS AIR A01が発売されたが、このカメラはOPC(Open Pl

記事を読む

no image

SwitchEasy NUDE for iPhone5 を買ってみた。まだ様子見の方がよさそう

SwitchEasy NUDE for iPhone 5 UltraClearSwitchEasy

記事を読む

simplism 0.7mm Ultra Thin Case for iPhone 6 Plus(5.5inch)購入

Amazonを見ているとiPhone 6 Plus の筐体はそれなりに傷が付きや

記事を読む

no image

WWDC 2011 に行ってきた

WWDC 2011に行ってきたときのメモなど。公開が遅れているうちにWWDC 2012のチケット

記事を読む

iOS8 文字入力に時間がかかる問題ようやく解決

iPhone6 Plus に機種変更してからずっと苦しめられていたのが文字入力時に時間がかか

記事を読む

no image

ついにヒレガス本第3版が出るらしい

以前から、いつかは出るかな、いやもういまさらでないかなと思っていたヒレガス本の第3版が11月についに

記事を読む

iPhone X simulator が表示されない

dyld: dyld_sim is not compatible with the loaded p

記事を読む

no image

[iOS] リズムくんにiOS 3.1.3 で問題発生、修正版Submit

昨日 2012/09/07 リズムくんのサポートページ に、下記のレポートあり。 正直

記事を読む

no image

詳解 Objective-C 2.0 改訂版 2010年12月17日発売

まだ書店で遭遇できてないけれども荻原さんの詳解 Objective-C 2.0の改訂版が発売されてい

記事を読む

no image

iPhoneアプリビジネス本 The Business of iPhone App Development

iPhoneアプリを売るための情報が詰まった本。 ここまでやるか、というくらいの情報が詰まっている。

記事を読む

Message

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください

Xcode 11.4からCatalinaが必須に

Catalina に関してはよい噂を聞かないので、なるべく移行を先送

Bluetooth MIDIキーボード KORG microKEY Airを買ってみた

以前から気になっていた、Bluetooth MIDI キーボード K

Ergohuman のオフィスチェアが気に入っている

コロナウィルスの影響で自宅勤務が数週間続いている。自分は自宅で開発環

AWS IoTを利用してクラウド連携機能を追加してみた

GWに自宅待機でまとまった時間が確保できたので、AWS Io

おんぷちゃん for iPad にオンライン授業サポート機能を追加

コロナウィルスの影響で、うちの子どもたちのピアノレッ

→もっと見る

PAGE TOP ↑