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