2013-03-25 8 views
9

私はObjective Cの初心者で、^演算子は何ですか?いくつかのソースコードを調べているうちに、私は次の構築を見た:Objective-C the^operator

dispatch_once(&onceToken, ^{ 
    UIGraphicsBeginImageContextWithOptions(CGSizeMake(20.f, 13.f), NO, 0.0f); 

    [[UIColor blackColor] setFill]; 
    [[UIBezierPath bezierPathWithRect:CGRectMake(0, 0, 20, 1)] fill]; 
    [[UIBezierPath bezierPathWithRect:CGRectMake(0, 5, 20, 1)] fill]; 
    [[UIBezierPath bezierPathWithRect:CGRectMake(0, 10, 20, 1)] fill]; 

    [[UIColor whiteColor] setFill]; 
    [[UIBezierPath bezierPathWithRect:CGRectMake(0, 1, 20, 2)] fill]; 
    [[UIBezierPath bezierPathWithRect:CGRectMake(0, 6, 20, 2)] fill]; 
    [[UIBezierPath bezierPathWithRect:CGRectMake(0, 11, 20, 2)] fill]; 

    defaultImage = UIGraphicsGetImageFromCurrentImageContext(); 
    UIGraphicsEndImageContext(); 

}); 

そして、私は^が何であるか知りたいのですか?

+0

これを読む:http://developer.apple.com/library/ios/#documentation/cocoa/Conceptual/Blocks/Articles/00_Introduction.html –

+3

@DanielSchneller私はそれを言うでしょうこの場合、ブロックが何を呼んでいるのか分からなければ、ブロックのドキュメントを検索することは非常に難しいからです。あなたはObjective-Cガイドを読むことができますが、それは学ぶための最良の方法ではありません。 –

+0

@RogerNolan私はあなたに完全に同意します、ありがとう。 – HackU

答えて

16

^は、Objective-C内のブロック定義の開始を示しました。

はここで見てください:このコンテキストでは、^はオペレータではない、それはObjective-Cの@マイクのダウン投票の回答の構文の一部であることをhttp://developer.apple.com/library/ios/#documentation/cocoa/Conceptual/Blocks/Articles/bxGettingStarted.html#//apple_ref/doc/uid/TP40007502-CH7-SW1

注厳密の正しい定義であります"^演算子"

+0

迅速な対応をありがとうございます。それは私をたくさん助けました! – HackU

+0

@HackU正しい答えをマークする必要があります。 –

+0

この重要な編集をしてくれてありがとう、@RogerNolan。 –

2

これは、オブジェクトcのブロックを作成するために使用されます。ブロックは、cの関数ポインタとまったく同じです。これは、ここではブロックを開始するための信号であるあなた

checkout this link

+0

ありがとうございました! – HackU

+0

あなたは歓迎です – Rafeek

4

に役立つことがあります。

あなたは、いくつかのチュートリアルのブログや記事を読むことによって、ブロックのより多くの情報を見つけることができます。

Blocks – An Interesting Objective-C Addition In iOS 4

How To Use Blocks in iOS 5 Tutorial

あなたがブロックの基本的なことを知ったとき、あなたはApple's document about blockを参照することができます。

実際、ブロックの最も一般的な使用は、GCD(問題の場合はGrand Central Dispatchの略)、UIView's animationなどのコールバックのようなものです。これは現代のObj-Cプログラミングでは非常に有用で一般的です。 Objective Cので

+0

他のリンクありがとう! – HackU

6

それは、ブロックと呼ばれる

構文:tutorial by Akiel Khanを丸写しした

returnType (^variableName)(parameters); 

、(あなたは別の良いチュートリアルhereを見つけることができます):

  • ブロックリテラルは "anonymous"(つまり無名)
  • です
  • キャレット(^)記号
  • 戻り値の型を指定する必要はありませんでした。コンパイラは戻り値の型を "推測"できます。私たちが望むなら、明示的に言及することができました。

This is a Official Documentation, read it for more information.

関連する問題