Halten Blöcken im Wörterbuch

Habe ich meine eigene Methode, die einen block als argument. Ich will zu verfolgen, block in ein NSDictionary. Was ist der beste Weg, um den block mit dem Wörterbuch?

Ich versuchte diesen code, aber nach dem ausführen der Zeile darunter (setObject...) das Wörterbuch ist noch leer. Ich vermute, dass es ist, weil der block nicht der Typ NSObject. Aber was ist der richtige Weg, dies zu tun?

- (void)startSomething:(NSURLRequest*)request block:(void (^)(NSURLResponse*, NSData*, NSError*))handler {

    NSURLConnection *connection = [NSURLConnection connectionWithRequest:request delegate:self];

    [pendingRequests setObject:handler forKey:connection];
}

EDIT:

Nie Verstand. Ich weiß nicht, was ich dachte. 3 Punkte:

  1. Blöcke sind objc von Objekten
  2. Typo: setObject sollte setValue
  3. forKey ist ein string, so sollte es sein [Verbindung Beschreibung] oder so etwas wie, dass

Jedenfalls habe ich behoben, mein problem jetzt:

- (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);
    });
}

InformationsquelleAutor der Frage vgr | 2011-06-15

Schreibe einen Kommentar