[英]weakSelf when setting frame
我最近阅读了这篇文章,并认为使用本文的技巧是一个好主意。 我正在块中使用它,但也应该在下面的“块”中使用它。 下方的“方块”是真实的方块吗?
avatar.frame = ({
CGRect frame = avatar.frame;
frame.origin.y = CGRectGetMaxY(self.view);
frame;
});
那将变成:
__weak typeof(self)weakSelf = self;
avatar.frame = ({
__strong typeof(weakSelf)strongSelf = weakSelf;
CGRect frame = avatar.frame;
frame.origin.y = CGRectGetMaxY(strongSelf.view);
frame;
});
这不是一个障碍。 它是GCC C扩展名,如果括在方括号和括号内,则它将导致代码块返回一个值。
这不仅将配置细节隔离到初始化中,而且附加范围允许通用变量名称(如框架,按钮和视图)在后续初始化中重用。 没有更多的loginButtonFrame = ... / signupButtonFrame = ...!
资料来源: http : //nshipster.com/new-years-2014/
这不是一个块,块以^开头。 我相信这段代码:
({
CGRect frame = avatar.frame;
frame.origin.y = CGRectGetMaxY(self.view);
frame;
});
是创建CGRect的一种方法。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.