1

私は多くの iOS ヘッダーで (^) が使用されているのを見てきましたが、その記号が使用されている理由については、今まで一度も考えたことがありません。誰かがこれを啓発したいと思うでしょうか?

ありがとう。

4

4 に答える 4

11

それらはしばしば「ブロック」を示します。ブロック プログラミングのトピックを参照してください。

または、 WWDC 2012 セッション 712の冒頭を視聴すると、歴史的な文脈に触れながらブロックを案内してくれます。

于 2012-11-21T05:11:06.213 に答える
5

ブロックを意味します。ブロックは、コールバック関数を作成し、それをパラメーターとしてメソッドに渡すことができる構文です。他の言語では、これはクロージャー、ラムダ、または匿名クラスに似ています。

たとえば、リストされているパラメーターは void(^)(NSString *myStr) 、void を返し、NSString ポインターを受け取るブロック/関数を渡すことを期待しています。

メソッドで宣言された予期されるパラメーターに基づいて、次の構文を使用してブロックを作成できます。

^(<Parameters>) { <Body> } 

たとえば、ブロック パラメーターを期待するメソッドは次のようになります。

-(void)doSomething:(void(^)(NSString *myStr))theBlock;

...そして、次のように呼び出すことができます:

[self doSomething:^(NSString *myStr) { NSLog(@"The String is: %@", myStr); }];

ブロックはdoSomething:、パラメーター名を使用して、関数のようにコールバックされます。

-(void)doSomething:(void(^)(NSString *myStr))theBlock {
  theBlock(@"Hello!");
}

...次のように表示されます。

The String is: Hello!
于 2012-11-21T05:21:16.087 に答える
3

^ 文字はブロック、特にブロック パラメーターに使用されます。

于 2012-11-21T05:11:32.500 に答える
2

ブロックで文字「^」を使用する理由を尋ねている場合は、残りの文字が比較的少ないためです。

  1. すべての一般的なキーボードで使用できます。
  2. まったく使用できます-つまり、言語ではまだ重要ではなく、競合します。
  3. 愚かに見えないでください。

それは実際には 2 つまたは 3 つだけに絞り込まれ、そのうちの '^' が選ばれた理由は、まあ、理由です。

議論を詳しく調べたい場合は、llvm.org メーリング リストなどにおそらくこれに関する記録があります。

基本的に同じプロセスを経た、ラムダに関する C++11 委員会の議事録を参照することもできます。

于 2012-11-21T06:14:27.743 に答える