3
内的参数,我知道我可以这样定义块属性块,像这样:存储与NSArray的
self.myProperty = ^(){
// bla bla bla
};
商店阵列上做
NSArray *arrayOfBlocks = [[NSArray alloc] initWithObject:[self.myProperty copy]];
然后执行它使用
void (^ myblock)() = [arrayOfBlocks objectAtIndex:0];
myblock();
但是如果块有一个参数呢?
我的意思是,像块这样:
self.myProperty = ^(id myObject){
// bla bla bla
};
我想是能够保持这种线不变什么
void (^ myblock)() = [arrayOfBlocks objectAtIndex:0];
myblock();
// yes, I know I can replace myblock(); with myblock(object);
// but because I have a large number of blocks on this array, I will have to build
// a huge if if if if statements to see what block is being run and change the objects passed
我想是块与参数上存储阵列...这样的事情:
NSArray *arrayOfBlocks = [[NSArray alloc] initWithObject:[self.myProperty(object?) copy]];
这是可能的吗?
非常聪明的想法封装参数和块。这是黑魔法!谢谢! – SpaceDog 2013-05-02 18:44:30
@RubberDuck欢迎您。是的,这是非常整洁的东西,我非常喜欢关闭;) – 2013-05-02 18:54:11
嗨@ H2CO3 从callbackWithNumber返回它之前发送副本到块时是否存在内存管理问题:? 该块被添加到数组中,但它永远不会被释放!在这种情况下复制是否真的必要? – 2013-07-03 09:10:49