Index>Objective-C>blocks
ブロック構文
ブロックはMacOS X10.6、iOS4.0から使うことができるApple のC言語拡張です。
C,Objective-C,C++で使うことができます。
他のプログラミング言語ではクロージャと呼ばれることがある機能です。
非同期通信などによく使われています。
ブロック構文を使うには「^」を使用します。
^myBlock
^(NSString *line, BOOL *stop)
ブロック内で使う変数は「__block」をつけて宣言します。ブロック外からブロック内に値を渡すことができあます。
__block
__block
__Block_copy()
__Block_release()
このドキュメントは書きかけです。随時更新します。
例文
#import "MyObject.h" @implementation MyObject - (IBAction)myAction:(id)sender { //NSStringの場合 //文字列の中に検索行があったらYESを返す。 //ブロックストレージ __block BOOL found = NO; //データ NSString *multiLine = [NSString stringWithString:@"1st line\n2nd line\n3rd lin3\n" ]; //検索文字列 NSString *string = [NSString stringWithString:[myOutlet stringValue] ];//@"gamma"; NSLog( @"retainCount = %u",[string retainCount] ); [multiLine enumerateLinesUsingBlock:^(NSString *line, BOOL *stop) { if ([line localizedCaseInsensitiveCompare:string] == NSOrderedSame) { *stop = YES; found = YES; NSLog(@"myBlock class= %@",[line className]); } }]; NSLog( (found)?@"YES":@"NO" ); } @end
関連リンク
Cocoaの日々:10分でおぼえるBlocksの書き方