2011-11-05 9 views
6

のUIViewControllerメソッドによって実装「完了」引数の型のvoid (^)(void)構文:のUIViewController dismissViewControllerAnimated完了引数の型の構文

- (void)dismissViewControllerAnimated: (BOOL)flag completion: (void (^)(void))completion 

は私の好奇心をそそっていると私はそれのために任意のドキュメントを見つけることができませんでした。誰かが目的/意味を説明するのを手伝ってもらえますか?

事前に感謝します。

答えて

12

は、私の本からのブロックの議論です:

http://www.apeth.com/iOSBook/ch03.html#_blocks

あり例がありますが、ここであなたが約求めているもののようなものに近いです例です:

[self transitionFromViewController:fromvc 
        toViewController:tovc 
          duration:0.4 
          options:UIViewAnimationOptionTransitionFlipFromLeft 
         animations:nil 
         completion:^(BOOL done){ 
          [tovc didMoveToParentViewController:self]; 
          [fromvc removeFromParentViewController]; 
         }]; 

完了ブロックは1つのパラメータ、「完了」と呼ばれるBOOLをとりますが、これはそのコードでは使用されません。アイデアは、アニメーションが実行され、次に完了ブロック内のコードが実行されるというものです。

ブロックが将来の方法であるため、ブロックを快適にすることは非常に重要です。たとえば、iOSの4のビューのアニメーションが私の本の「ブロックベースのビューアニメーション」のセクションで説明したように、それらを使用しています(その後、新しいiOSの約4道を読んで、古い方法について最初に読んで):

http://www.apeth.com/iOSBook/ch17.html#_view_animation

iOS 5ブロックではさらに重要です。それらがオプションではない状況がますます増えています。

ブロックは、GCD(グランドセントラルディスパッチ)を使用する方法です。これは、マルチスレッドを実行するための最良の方法です。

+0

あなたが書いた素晴らしい本のように見えるマット、ありがとう、iOS 5バージョンの計画はありますか? –

+1

@Eddie:ダウンロード可能なすべての例をiOS 5に変換し始めました。 https://github.com/mattneub/Programming-iOS-4-Book-Examples/tree/master/convertedToIOS5 ... – matt

3

これは完了ブロックのためのものです。ブロックとは、APIに引数として渡すことができるコードスニペットです(ここでは補完処理のためによく見られます)。メモリを参照して状態を維持する機能を含むブロックの多くの機能があります。

はOBJの-Cのこのますます人気のある機能上のドキュメントを参照してください: http://developer.apple.com/library/ios/#documentation/cocoa/Conceptual/Blocks/Articles/00_Introduction.html

ブロックは、コールバックの振る舞い(通常は、委任または通知で達成)と考えられるかもしれないものを提供するが、彼らは、プログラマがのロジックを含めることができますコードをより表現力豊かにし、意図された動作の完全な進行を簡潔に伝えることができます。ここで

+2

クリーンアップを実行したり、解雇後に実行する必要のある他のアクションを開始する場合には、非常に便利であると付け加えることができます。デパートコールバックの代わりによく使われる – timthetoolman

+0

アイザックありがとう、私は簡単にブロックが導入されたときにそれについて読むが、愚かにも構文を調べていない! –

+0

@timthetoolman良いアドバイス。私は答えを広げ、ココアの他の一般的な完了処理メカニズムとの比較を含めました。 – isaac

関連する問題