Browse Source

Removing extraneous dispatch to background and using weak reference for delegate in response

Mattt Thompson 11 years ago
parent
commit
80a4f7dbc4
1 changed files with 8 additions and 9 deletions
  1. 8 9
      Source/Alamofire.swift

+ 8 - 9
Source/Alamofire.swift

@@ -626,15 +626,14 @@ public class Request {
         :returns: The request.
         :returns: The request.
     */
     */
     public func response(priority: Int = DISPATCH_QUEUE_PRIORITY_DEFAULT, queue: dispatch_queue_t? = nil, serializer: Serializer, completionHandler: (NSURLRequest, NSHTTPURLResponse?, AnyObject?, NSError?) -> Void) -> Self {
     public func response(priority: Int = DISPATCH_QUEUE_PRIORITY_DEFAULT, queue: dispatch_queue_t? = nil, serializer: Serializer, completionHandler: (NSURLRequest, NSHTTPURLResponse?, AnyObject?, NSError?) -> Void) -> Self {
-        dispatch_async(delegate.queue, {
-            dispatch_async(dispatch_get_global_queue(priority, 0), {
-                let (responseObject: AnyObject?, serializationError: NSError?) = serializer(self.request, self.response, self.delegate.data)
-
-                dispatch_async(queue ?? dispatch_get_main_queue(), {
-                    completionHandler(self.request, self.response, responseObject, self.delegate.error ?? serializationError)
-                })
-            })
-        })
+        let delegate = self.delegate
+        dispatch_async(delegate.queue) { [weak delegate] in
+            let (responseObject: AnyObject?, serializationError: NSError?) = serializer(self.request, self.response, delegate?.data)
+
+            dispatch_async(queue ?? dispatch_get_main_queue()) {
+                completionHandler(self.request, self.response, responseObject, delegate?.error ?? serializationError)
+            }
+        }
 
 
         return self
         return self
     }
     }