Jestem trochę nowy w blokach i potrzebuję pomocy. Chcę przechowywać blok w NSDictionary
i wykonać ten blok, gdy jest on dostępny w oparciu o jego numer key
. Oto, co mam do tej pory jako przykład.Jak mogę wykonać bloki przechowywane w NSDictionary?
NSDictionary *blocks = [NSDictionary dictionaryWithObjectsAndKeys:
^{NSLog(@"Log Block 1");}, @"Block1",
^{NSLog(@"Log Block 2");}, @"Block2",
nil];
I następnie wyliczyć za pomocą słownika za pomocą keyEnumerator
. Wiem, że blok jest przechowywany poprawnie, ponieważ podczas wyliczenia dzwonię pod numer NSLog(@"%@", [blocks objectForKey:key]);
i otrzymuję <__NSGlobalBlock__: 0x100003750>
. Więc wiem, że mogę uzyskać do niego dostęp, ale jak mogę go wykonać w tym momencie?
Dzięki, to pracował dla mnie. Zauważyłem jednak, że gdy kolejne wywołania są wykonywane do każdego bloku, zwracają te same informacje, co przy pierwszym uruchomieniu, niż zawierają wszystko, co mogło się zmienić od tego czasu. Czy istnieje sposób na wykonanie go za każdym razem, gdy jest wywoływany zamiast zwracania pierwotnej informacji? – sud0
Jest wykonywany za każdym razem, ale przechwytuje zmienne zewnętrzne podczas ich kopiowania, a nie kiedy jest wykonywany. –