【发布时间】:2011-03-16 12:51:42
【问题描述】:
我只是在想,如果我创建两个块然后将它们添加到 NSArray 中,您可以将块视为对象,有没有办法从数组中执行它们?
int (^Block_001)(void) = ^{ return 101; };
int (^Block_002)(void) = ^{ return 202; };
NSArray *array = [NSArray arrayWithObjects:Block_001, Block_002, nil];
编辑:为清晰起见根据@davedelong 的出色回答进行更新
int (^Block_001)(void) = [^{ return 101; } copy];
int (^Block_002)(void) = [^{ return 202; } copy];
NSArray *array = [NSArray arrayWithObjects:Block_001, Block_002, nil];
[Block_001 release];
[Block_002 release];
【问题讨论】:
-
很好的一组答案....我看到了标题,并希望获得一些简单的代表点。人们得到了相当彻底的覆盖。 :)
-
只是快速点,如果你不复制/释放块将在堆栈中......所以如果堆栈被破坏,应用程序会崩溃吗?
标签: iphone objective-c cocoa-touch nsarray objective-c-blocks