浏览代码

[Issue #269] Fixing crash caused by Manager deinit

Mattt Thompson 11 年之前
父节点
当前提交
e356b9f6f8
共有 2 个文件被更改,包括 15 次插入5 次删除
  1. 0 4
      Source/Alamofire.swift
  2. 15 1
      Tests/ManagerTests.swift

+ 0 - 4
Source/Alamofire.swift

@@ -296,10 +296,6 @@ public class Manager {
         self.session = NSURLSession(configuration: configuration, delegate: delegate, delegateQueue: nil)
     }
 
-    deinit {
-        self.session.invalidateAndCancel()
-    }
-
     // MARK: -
 
     /**

+ 15 - 1
Tests/ManagerTests.swift

@@ -42,5 +42,19 @@ class AlamofireManagerTestCase: XCTestCase {
             XCTAssertNil(error, "\(error)")
         }
     }
-}
 
+    func testReleasingManagerWithPendingRequestDeinitializesSuccessfully() {
+        var manager: Manager? = Alamofire.Manager()
+        manager!.startRequestsImmediately = false
+
+        let URL = NSURL(string: "http://httpbin.org/get")!
+        let URLRequest = NSURLRequest(URL: URL)
+
+        let request = manager!.request(URLRequest)
+
+        manager = nil
+
+        XCTAssert(request.task.state == .Suspended)
+        XCTAssertNil(manager)
+    }
+}