是否可以直接将块存储在NSArray等集合中?
答案 0 :(得分:23)
是的,块是有效的Objective-C对象,遵循NSObject的所有约定。只需复制/自动释放舞蹈:
[array addObject:[[block copy] autorelease]];
对于ARC - 省略复制和自动释放呼叫:
[array addObject:block];
答案 1 :(得分:1)
无法弄清楚如何在评论线程中回应Eimantas的回答,但是-copy是必要的,因为可能已经在堆栈上创建了块。见bbum's post on the topic中的2)。