NSURLConnection NSURLRequest proxy für asynchrone web-service-Aufrufe

Ich habe mehrere views, die die gleiche NSURLRequest/NSURLConnection request. Ideal, um die Wiederverwendung von code, ich würde gerne eine Art "proxy", die nicht alle der zugrunde liegenden Arbeit von der Erstellung/Ausführung der (asynchronen) request/Verbindung, wobei alle Delegierten Methoden, etc., damit ich nicht haben, kopieren Sie alle diese NSURLConnection delegate-Methode-Handler in jeder Ansicht. Zuerst von allen, ist dieser design-Ansatz für angemessen? Zweitens, wie würde ich mich über etwas ähnliches?

Für ein wenig hintergrund-info, ich versuchte dies und bekam es auch "funktioniert", aber es scheint nicht zu sein, die Ausführung asynchron. Ich erstellt einen Proxy.h/m-Datei, die Instanz-Methoden für die verschiedenen web-service-Aufrufe (und enthält auch die NSURLConnection delegate-Methoden):

@interface Proxy : NSObject {

    NSMutableData *responseData;
    id<WSResponseProtocol> delegate;
}

- (void)searchForSomethingAsync:(NSString *)searchString delegate:(id<WSResponseProtocol>)delegateObj;

@property (nonatomic, retain) NSMutableData *responseData;
@property (assign) id<WSResponseProtocol> delegate;

@end

Den WSResponseProtocol so definiert:

@protocol WSResponseProtocol <NSObject>

@optional
- (void)responseData:(NSData *)data;
- (void)didFailWithError:(NSError *)error;

@end

Zu verwenden, die view-controller muss lediglich konform zu den WSResponseProtocol Protokoll, fangen die Antwort(en). Machen die web-service-Aufruf erfolgt in etwa so:

Proxy *p = [[Proxy alloc] init];
[p searchForSomethingAsync:searchText delegate:self];
[p release];

Kann ich mehr code, aber die übrigen kann davon ausgegangen werden. Bevor Sie anrufen, ich "startAnimating" ein UIActivityIndicatorView spinner. Aber die spinner nie spinnt. Wenn ich einfach die NSURLConnection delegate-Methoden direkt in der view-controller, der spinner dreht. Also, es macht mich denken, dass meine Implementierung nicht ausführen asynchron. Irgendwelche Gedanken/Ideen hier?

InformationsquelleAutor tbehunin | 2009-12-24

Schreibe einen Kommentar