我们在代码块中使用对象的成员时(成员变量是属性strong,MRC估计是retain时效果一样,使用方法时也一样):
警告:
capturing self strongly in this block is likely to lead to a retain cycle
意思应该是block会retain一次,所以使用前最好 __block MyClass* bObject = self;
简单代码如下: __block LoginViewController * blockSelf = self;
if (name ==nil || name.length<=3) {
[self.alert addButton:@"OK" actionBlock:^(void) {
[blockSelf.userNameField becomeFirstResponder];
}];
[self.alert showInfo:self title:@"信息不完整" subTitle:@"用户名长度必须大于3." closeButtonTitle:nil duration:0.0f ];
self.checkFormStatus = FALSE;
self.alert = nil;
return FALSE;
}
代码里添加了
__block LoginViewController * blockSelf = self;
同事替换了之前的写法 self.userNameField 改成 blockSelf.userNameField
告警就木有了!