2011-06-28 12 views
2

UIViewクラスは、クラスのメソッドを持っていますパラメータとして渡すべきは何ですか?

+ (void)transitionWithView:(UIView *)view duration:(NSTimeInterval)duration options:(UIViewAnimationOptions)options animations:(void (^)(void))animations completion:(void (^)(BOOL finished))completion 

は、それは私がアニメーションと完了の引数などの引数を見たのは初めてです。この場所に書き込むもの:アニメーション:(void(^)(void))アニメーション? (^)とボイドはどういう意味ですか?

答えて

3

は、Objective-Cののblock構文です。シンタックスは完全に鈍く、イライラしていますが、実際には非常に簡単です。

function transitionWithView(view, duration, options, animationFunction, onComplete); 

... animationFunctionと:

ブロックはそうあなたがの線に沿って何かされた署名について考えることができる厄介な構文を無視して、JavaScriptなどの他の言語でclosureと論理的に等価ですonCompleteはクロージャー(またはObjective-Cの用語を使用するブロック)です。基本的には、それらが作成されたコンテキストの状態を保持する関数ポインタと考えることができます。

Objective-Cの(^)トークンは単にブロックを表します。先行する型はブロックの戻り型を示します(例ではvoidであり、どちらのブロックも値を返さないことを意味します)。括弧内に続く型はブロックが取る引数を示します(animations、ブロックをcompletionブロックに「完了」と言います。

6

^文字はcブロックを表します。ブロックは、関数が必要とするたびに実行されるコードチャンクです。 animations:パラメータについてはわかりませんが、アニメーションが終了するとcompletion:ブロックが実行されます(名前状態として)。

可能性の呼び出しは次のようになります。

あなたが見ている何
[UIView transitionWithView:myView 
        duration:1.0 
        options:0 
       animations:^{} /* this denotes empty block */ 
       completion:^{ 
           NSLog(@"Animation has completed"); 
          } 
]; 
+0

+1洞察力のためにブロック= Objective-Cでブロックします。http://pragmaticstudio.com/blog/2010/7/28/ios4-blocks-1 – Perception

関連する問題