我對塊有點新,需要一些幫助。我想在NSDictionary
中存儲一個塊,並在基於其key
訪問時執行所述塊。這是我迄今爲止的一個例子。如何執行存儲在NSDictionary中的塊?
NSDictionary *blocks = [NSDictionary dictionaryWithObjectsAndKeys:
^{NSLog(@"Log Block 1");}, @"Block1",
^{NSLog(@"Log Block 2");}, @"Block2",
nil];
然後我通過使用keyEnumerator
來列舉字典。我知道這個塊被正確存儲,因爲我在枚舉過程中調用了NSLog(@"%@", [blocks objectForKey:key]);
,並得到了<__NSGlobalBlock__: 0x100003750>
。所以我知道我可以訪問它,但是我現在如何執行它?
謝謝,這對我很有用。不過,我注意到,當對每個塊進行後續調用時,它將返回與第一次執行時相同的信息,而不是包含自此以後可能已更改的任何內容。有沒有辦法讓它在每次被調用時執行而不是返回原始信息? – sud0 2012-04-13 00:00:36
它每次都會執行,但它會在複製時捕獲外部變量,而不是在執行時進行捕獲。 – 2013-08-20 04:53:35