我创建NSURLSessionStreamTask
对象,并使用[NSURLSessionStreamTask readDataOfMinLength:maxLength:timeout:completionHandler:]
和[NSURLSessionStreamTask writeData:timeout:completionHandler:]
发送和接收数据。然后,我用closeRead
和closeWrite
方法关闭它。
问题在于,在相应的会话对象上调用[NSURLSession finishTasksAndInvalidate]
不会释放其委托引用。我想这是因为任务的状态由于某种原因仍然保持NSURLSessionTaskStateRunning
。此任务没有剩余的未完成读写操作。如果我调用[NSURLSession invalidateAndCancel],则释放委托引用。
在这种情况下,NSURLSessionStreamTask
的状态应该变成NSURLSessionTaskStateCompleted
的方式有什么特殊的方式吗?