我可以在ios (ARC)中创建一个对象,有一个函数调用与块,而不是设置为空结束?它会有内存泄漏吗?



我可以在ios (ARC)中创建一个具有块的函数调用的对象,而不是在最后设置为null吗?它会有内存泄漏吗?

下面是一个示例代码:
WebService *webService = [[WebService alloc] init]; 
[webService request:getPriceSheet callbackBlock:^(BaseResponseMsg *responseMsg){ 
   ...
}];

WebService对象何时被释放?这里有内存泄漏吗?在调用块之后,它是否被释放了?

我是否需要把对象放在一个属性中,以便当视图控制器离开时它会释放?

在不知道request:callbackBlock:做什么的情况下,webService可能在当前作用域结束时被释放,并且回调将永远不会执行。

很有可能,而且通常,像request:callbackBlock:这样的方法会将webService对象间接地放入队列中,或者作为临时强保留的委托给另一个进程。当webService不再被request相关的基础设施引用时,它将被发布。

对此持保留态度。如果不知道request:callbackBlock:的特性,就不可能知道谁保留了对webService的引用。

最新更新