Sono un po 'nuovo ai blocchi e ho bisogno di aiuto. Voglio memorizzare un blocco in un NSDictionary
ed eseguire tale blocco quando si accede in base al suo key
. Ecco quello che ho finora ad esempio.Come posso eseguire i blocchi memorizzati in un NSDictionary?
NSDictionary *blocks = [NSDictionary dictionaryWithObjectsAndKeys:
^{NSLog(@"Log Block 1");}, @"Block1",
^{NSLog(@"Log Block 2");}, @"Block2",
nil];
Quindi si enumera attraverso il dizionario utilizzando keyEnumerator
. So che il blocco viene archiviato correttamente perché chiamo NSLog(@"%@", [blocks objectForKey:key]);
durante l'enumerazione e ottengo <__NSGlobalBlock__: 0x100003750>
. Quindi so che posso accedervi, ma come posso eseguirlo a questo punto?
Grazie, questo ha funzionato per me. Ho notato, tuttavia, che quando le chiamate successive vengono fatte a ciascun blocco, restituisce le stesse informazioni di quando è stato eseguito per la prima volta piuttosto che includere tutto ciò che può essere cambiato da allora. C'è un modo per farlo eseguire ogni volta che viene chiamato piuttosto che restituire le informazioni originali? – sud0
Viene eseguito ogni volta, ma cattura le variabili esterne quando è copiato, piuttosto che quando viene eseguito. –