у меня есть собственный метод, который принимает блок в качестве аргумента. Я хочу отслеживать этот блок внутри NSDictionary. Как лучше всего добавить блок в словарь?
Я пробовал этот код, но после выполнения строки ниже (setObject ...) словарь все еще пуст. Я предполагаю, что это потому, что блок не относится к типу NSObject. Но как правильно это сделать?
- (void)startSomething:(NSURLRequest*)request block:(void (^)(NSURLResponse*, NSData*, NSError*))handler {
NSURLConnection *connection = [NSURLConnection connectionWithRequest:request delegate:self];
[pendingRequests setObject:handler forKey:connection];
}
EDIT:
Неважно. Не знаю, о чем я думал. 3 балла:
В любом случае я исправил свою проблему вот так:
- (void)startSomething:(NSURLRequest*)request block:(void (^)(NSURLResponse*, NSData*, NSError*))handler {
NSURLConnection *connection = [NSURLConnection connectionWithRequest:request delegate:self];
[pendingRequests setValue:handler forKey:[connection description]];
}
- (void)connectionDidFinishLoading:(NSURLConnection *)connection {
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^(void) {
void (^handler)(NSURLResponse*, NSData*, NSError*);
handler = [pendingRequests valueForKey:[connection description]];
handler(nil, nil, nil);
});
}