NSURLSession阻塞内存管理



如果我要重新创建NSURLSession,我将复制块参数传递到这个函数:-

- dataTaskWithRequest:(NSURLRequest *)request completionHandler:(void (^)(NSData *data, NSURLResponse *response, NSError *error))completionHandler;

为了进一步说明,如果我正在编写NSURLSession,遵循ARC/Blocks的最佳实践,我是否应该复制传递到上述函数的completionHandler,因为它们被异步调用(可能在堆栈已经出现之后?)

NSURLSession将自己复制这些块。

所以,不,你不需要复制它们。请注意,如果你选择在完成处理程序上调用copy,除非你自己保留了对副本的引用,否则ARC会在你"完成"它之后释放副本,这将是在副本被传递给dataTaskWithRequest:completionHandler:函数之后立即释放的。

而且,只有一个完成处理程序传递给该方法。

最新更新