问题描述
|
当我在Objective-C中有一个代码块时,看起来像这样:
self.request = [[ASIHTTPRequest requestWithURL:...
[self.longPollRequest setCompletionBlock:^{
NSLog(@\"%@\",self.request.responseString);
}];
它会保留“ 1”还是保留“ 2”?
解决方法
正如块编程主题所说:
在参考计数环境中,
当您引用
一个块内的Objective-C对象,它
被保留。即使你也是如此
只需引用一个实例变量
对象。标有对象变量
__block存储类型
但是,修饰符不会保留。
如果在方法的实现内使用块,则规则
用于对象的内存管理
实例变量更加微妙:
如果通过引用访问实例变量,则self为
保留
如果通过以下方式访问实例变量
值,则保留变量。
您在块中引用“ 1”,因此保留“ 1”。