在集合中存储块

时间:2011-03-09 17:33:47

标签: objective-c cocoa nsmutablearray objective-c-blocks

是否可以直接将块存储在NSArray等集合中?

2 个答案:

答案 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)。