0
我正在使用GCDWebServer將圖片從我的iPhone共享到本地網絡上的其他設備。GCDWebServer響應與completionBlock從另一個塊調用
我想對GCDWebServerConnection致電GCDWebServerCompletionBlock我自己的塊,但我的應用程序崩潰裏面沒有任何日誌,但「信號SIGABRT」:
GWS_DCHECK(_responseMessage == NULL);
但是,如果我回到我的塊的外部直接的響應,一切正常。
這裏是我的代碼:
-(void)handleMediaRequest:(GCDWebServerRequest *)request completion:(GCDWebServerCompletionBlock)completionBlock {
//...
URLParser *parser = [[URLParser alloc] initWithURLString:url];
NSString *photoId = [parser valueForVariable:@"id"];
[[PhotoLibraryManager photoLibraryManager] getPhotoWithId:photoId completionBlock:^(UIImage *image) {
NSData *data = UIImageJPEGRepresentation(image, 0.70);
completionBlock([GCDWebServerDataResponse responseWithData:data contentType:@"application/octet-stream"]);
} failureBlock:^(NSError *error) {
completionBlock([GCDWebServerDataResponse responseWithStatusCode:404]);
}];
}
如何調用GCDWebServerCompletionBlock我自己的塊內?
沒有錯,我使用異步處理程序。這就是爲什麼方法簽名中有一個完成塊。我正在頂層使用:[server addDefaultHandlerForMethod:@「GET」 requestClass:[GCDWebServerRequest class] asyncProcessBlock:^(GCDWebServerRequest * request,GCDWebServerCompletionBlock completionBlock){_Strong typeof(weakSelf)strongSelf = weakSelf; [strongSelf handleMediaRequest:request completion:completionBlock]; }]; – tza
我的不好,我讀的代碼太快了。你可以在你的問題中添加導致「GWS_DCHECK(_responseMessage == NULL)」的堆棧跟蹤嗎? – Pol