�񤳤��񤳤��ȻפäƤ�����˺��Ƥ��Τ�Perl���󥸥˥��Τ����Objective-C Blocks�����򸫤ƻפ��Ф����������ޤ��󥿥��ȥ���ؾ�Ǥ���
��˽񤤤Ƥߤ�
Blocks�äƤΤ����ԤʤΤ������ä��ε����ʤ�Apple�Υɥ�������ʤ�򸫤Ƥ�館�Ф����Ȼפ���Ǥ������ޤ��������ɤ������ʤΤ��դ��������ȥ�ˤΤäȤä�Ruby����Ӥ��Ƥߤ롣
f = lambda {|x| puts "#{x}�Τ��Ȱʳ��ϲ���ͤ����ʤ�" } f.call("���ɤ�")
void (^f)(id) = ^(id x) { NSLog(@"���������Ƥ�Ũ�˲󤷤Ƥ⡢�ͤ�%@��̣����", x); }; f(@"���ɤ�");
�ʤ�������ä��ꤸ��ʤ������Ƥ���Ƥ롣
�夬Ruby�ǡ�����ObjC�ǡ��������̰����ˤ�NSString*�Ȥ���Ȥ��Ȼפ����ɡ��ޤ�Ruby�Ǥȵ�ư���碌�뤿���id�ˤ��Ƥߤ������줾�쥳�ԥڤ���ư�����Ƥߤ�Ȥ����衣�����ʻҤ�̾���Ȥ�����Ƥߤ�Ȥ����衣
�ʤˡ��֥��å����ѿ�������Ƥ�Ȥ�����������⤤�����㤢����������������Ф�����
id f = ^(id x) { NSLog(@"���������Ƥ�Ũ�˲󤷤Ƥ⡢�ͤ�%@��̣����", x); };
id�����ѿ��������Ǥ��Ƥ��ޤä����¤Ϥ��Υ֥��å��ϥ��֥������ȤʤΤǡ����̤�id���Ȥ��ư����뤷����å������Υ쥷���Фˤʤä���Ǥ��롣�������id�����ѿ������äƤ�Ȥ��ϴؿ��ߤ����˻Ȥä���Ǥ��ʤ��Τǡ��ºݻȤ��Ȥ���
((void (^)(id))f)(@"���ɤ�");
�Ȥ����㥹�Ȥ��Ƥ��ʤ��㤤���ʤ��櫓�ǡ�id������������̣�Ϥ���ޤ�ʤ���������id���Ȥ��ư�����äƤ��Ȥϡ�NSArray�Ȥ�NSDictionary�ˤĤä���ɤ�����Ǥ���äƤ��ȤǤ⤢�롣���쥯����󥯥饹�Ȥ������Ǻ��ʤ��Ƥ�¾�Υ��֥������ȤȰ���Array�ˤĤä���ɤ��Ƥ��ޤ����Ƚ�������Ȥ��Ǥ��롣�Ȥ�����ObjC��Ǥ�ObjC�Υ��֥������Ȱ��������ɡ�C�ǻȤäƤ�Ȥ��Ϥ��첿�Ȥ��ư����Ƥ������������ˤʤ롣
���ä����ʤΤǥ֥��å���ʸ
����������Ȳ����줪�������Τǽ����ʤΤǡ��ºݤ˻ȤäƤ�Ȥ�����ߤƤߤ롣Ruby��block�äƸ��ä���֥��å���ʸ��פ��⤫�٤�Ȼפ����㤨�Ф���ʤΡ�
languages = ['Ruby','Objective-C','Perl','PHP','JavaScript','Haskell'] languages.each do |l| puts "#{l}�ʤ�¿ʬ�񤱤�" end
Blocks�ȸ�������ˤϤ��������Ȥ����ò¤¹¤ï¿½á¥½ï¿½Ã¥É¤ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½Ä¤ï¿½Foundation�Υ��饹�ˤ⤢�롣�åµï¿½Î¥ï¿½ï¿½ï¿½ï¿½É¤ï¿½ObjC�ǥ֥��å���Ȥäƽñ¤¯¤È¤ï¿½ï¿½ï¿½Ê¤ï¿½ï¿½ó¤¸¤Ë¤Ê¤ë¡£
NSArray *languages = [NSArray arrayWithObjects:@"Ruby",@"Objective-C",@"Perl",@"PHP",@"JavaScript",@"Haskell",nil]; [languages enumerateObjectsUsingBlock:^(id item, NSUInteger idx, BOOL *stop) { NSLog(@"%@�ʤ�¿ʬ�񤱤�", item); }];
�������󡢻��Ƥ�Ĥ�͡�����äȤ狼��ɤ���������� enumerateObjectsUsingBlock:�äƤΤ������˥֥��å�����NSArray�Υ��󥹥��󥹥᥽�åɤǡ�Array#each��Ʊ���褦�˼�ʬ���Ȥ����Ǥ��Ĥ��Ľ�˥֥��å����Ϥ��Ƽ¹Ԥ��Ƥ���롣���ʤߤˡ��ֺǽ�ΰ�����NSArray�����ǤΥ��֥������ȡ���������ǥå����������͡��Ǹ夬�롼�פ�ߤ�뤿���BOOL�Υݥ��󥿡פȤ���3�����Υ֥��å����Ϥ��ʤ��Ȥ����ʤ����ɤä����äġ���Enumerable#each_with_index�Τ��ᤤ���ʡ�
�����Ǥ�item�����ȤäƤʤ����ɡ������Ȥ��Ȥ����餳��ʴ�����3���ܤΰ�����YES������Ƥ��Ȥ���ʹߤϼ¹Ԥ���ʤ��ʤ롣
[languages enumerateObjectsUsingBlock: ^(id item, NSUInteger index, BOOL *stop) { NSString *status; if ([item isEqualToString:@"PHP"]) { status = @"�������Ϥ������"; *stop = YES; } else { status = @"�ڤ����ä���"; } NSLog(@"%d���ܡ�%@��񤤤���%@", index+1, item, status); } ];
�䡢�̤�PHP�ˤĤ��Ʋ������������櫓����ʤ��Ǥ��衩����ʤ�������äȤ������̤���ʤ��Ǥ�����
���ٽ�
���ε�������ǤϽ񤤤Ƥʤ����ɡ���⥯��������ʤΤǥ֥��å����������줿����ƥ����Ȥ��ѿ��Ȥ��֥��å����椫�黲�ȤǤ��롣NSArray��map�᥽�å����䤷�Ƥߤ���ʰץ٥���ޡ����ؿ���äƤߤ��ꤷ���ΤǺ��ٻ�����
���ȡ�Enumerator�⤤�����ɡ�Blocks�������Ϥ�ȯ������Τϡ�C�ʤ�dispatch_async��ObjC�ʤ�NSOperation�Ȥ���Ȥä���Ʊ���˽�����ݤ�ݤ��ꤲ�Ƥ��Ȥ����Ȥ�������Blocks�����⤽��Grand Central Dispatch�Ȥ������ȤߤȰ���Ƴ�����줿��ΤʤΤǡ�����ˤĤ��ƤϤ⤦���礤Ĵ�٤ƺ��ٽ񤯡����ʤߤ��㤨��NSArray�Ǥ�enumerateObjectsUsingBlock:��¾��enumerateObjectsWithOptions:usingBlock:�Ȥ����᥽�åɤ����äơ������NSEnumerationConcurrent�äƥ��ץ������Ϥ��Ƥ�������˼¹Ԥ��Ƥ��줿�ꤹ�롣
;��
��ʸ�����⤤�ΤϤ⤦ObjC�����ɤ����褦��ʤ����ɡ���������ʤ����typedef���Ƥ�������ǥ֥��å������Υޥ����Ǥ�񤤤Ȥ��Ⱦ����ϥޥ��˸����ʤ���ʤ��褦�ʵ������ʤ���ʤ��褦�ʴ����������ꤷ�ʤ��ä��ꡣ���󡣥��⤤��
;��2
gcc�����ȼ���ĥ�餷���Τ�¿ʬ�Ȥ����MacOSX 10.6��Xcode����°���Ƥ��Ĥ������Ȼפ����ɡ�Clang�ˤ��Ȥ߹��ޤ�Ƥ�餷������Ƥʤ����ɡ�Clang�Ǥʤ�¾�Υץ�åȥե�����Ǥ�Blocks�Ȥä�C�Υ����ɥ���ѥ���Ǥ���󤸤�ʤ����ʡ�
;��3
iPhoneSDK�ǻȤ���Τ������äƤΤ�ʹ���ʤ��Ǥ����������ã¤ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½