我对保留周期有所了解。如果我在块内使用self.variable。据说我让视图控制器保留了块,块保留了自我保留的self.property。所以保留周期发生。但是,如果我声明一个实例变量,并且我在块中使用它,它是一个保留周期吗?如果是,如何解决问题?
代码是:
pos >= size()
答案 0 :(得分:1)
是的,仍然会保留自己
您应该通过弱实例引用ivar:
@interface ViewController (){
NSString *phone;
}
@end
-(void)example
{
__weak typeof(self) weakSelf = self;
[self.varble ^block
{
typeof(self) self = weakSelf;
self->phone=@"abc";// a retain cycle?
}];
}
或者,如果您没有更改该值(只是简单地使用它),请将ivar的值复制到局部变量中:
@interface ViewController (){
NSString *phone;
}
@end
-(void)example
{
NSString *phoneValue = [phone copy]; // the copy is optional, but good practice
[self.varble ^block
{
[phoneValue someMethod];
}];
}