소스 검색

Workaround for Swift2 which apparently fails to retain the completion blocks passed as parameters

tifroz 10 년 전
부모
커밋
9d38bb4f94
2개의 변경된 파일2개의 추가작업 그리고 2개의 파일을 삭제
  1. 1 1
      GCDWebServer/Core/GCDWebServerConnection.m
  2. 1 1
      GCDWebServer/Core/GCDWebServerResponse.m

+ 1 - 1
GCDWebServer/Core/GCDWebServerConnection.m

@@ -759,7 +759,7 @@ static inline NSUInteger _ScanHexNumber(const void* bytes, NSUInteger size) {
 - (void)processRequest:(GCDWebServerRequest*)request completion:(GCDWebServerCompletionBlock)completion {
   GWS_LOG_DEBUG(@"Connection on socket %i processing request \"%@ %@\" with %lu bytes body", _socket, _virtualHEAD ? @"HEAD" : _request.method, _request.path, (unsigned long)_bytesRead);
   @try {
-    _handler.asyncProcessBlock(request, completion);
+    _handler.asyncProcessBlock(request, [completion copy]);
   }
   @catch (NSException* exception) {
     GWS_LOG_EXCEPTION(exception);

+ 1 - 1
GCDWebServer/Core/GCDWebServerResponse.m

@@ -242,7 +242,7 @@
 
 - (void)performReadDataWithCompletion:(GCDWebServerBodyReaderCompletionBlock)block {
   if ([_reader respondsToSelector:@selector(asyncReadDataWithCompletion:)]) {
-    [_reader asyncReadDataWithCompletion:block];
+    [_reader asyncReadDataWithCompletion:[block copy]];
   } else {
     NSError* error = nil;
     NSData* data = [_reader readData:&error];