Tôi hơi mới mẻ đối với các khối và cần trợ giúp. Tôi muốn lưu trữ một khối trong một NSDictionary
và thực hiện khối nói khi nó được truy cập dựa trên key
của nó. Đây là những gì tôi có cho đến nay là một ví dụ.Làm cách nào để thực thi các khối được lưu trữ trong NSDictionary?
NSDictionary *blocks = [NSDictionary dictionaryWithObjectsAndKeys:
^{NSLog(@"Log Block 1");}, @"Block1",
^{NSLog(@"Log Block 2");}, @"Block2",
nil];
Tôi sau đó liệt kê thông qua từ điển bằng cách sử dụng keyEnumerator
. Tôi biết khối đang được lưu trữ đúng cách vì tôi gọi NSLog(@"%@", [blocks objectForKey:key]);
trong quá trình liệt kê và nhận được <__NSGlobalBlock__: 0x100003750>
. Vì vậy, tôi biết tôi có thể truy cập nó nhưng làm thế nào tôi có thể thực hiện nó vào thời điểm này?
Cảm ơn, điều này đã hiệu quả đối với tôi. Tuy nhiên, tôi nhận thấy rằng khi các cuộc gọi tiếp theo được thực hiện cho mỗi khối, nó sẽ trả về cùng một thông tin như khi nó được thực thi đầu tiên thay vì bao gồm bất kỳ thứ gì có thể đã thay đổi kể từ đó. Có cách nào để làm cho nó thực thi mỗi lần nó được gọi thay vì trả lại thông tin gốc? – sud0
Nó thực hiện mọi lúc, nhưng nó nắm bắt các biến bên ngoài khi nó được sao chép, thay vì khi nó được thực hiện. –