我最近阅读this post,并认为使用文章中的提示是个好主意。我在块中使用它,但是我也应该在下面的“块”中使用它。 “块”是否在真正的区块下面?
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;
});
答案 0 :(得分:2)
这不是块。它是GCC C扩展,它会导致代码块 如果括在括号和括号内,则返回一个值。
这不仅将配置细节分为初始化, 但附加范围允许通用变量名称,如框架, 按钮,以及在后续初始化中重复使用的视图。不再 loginButtonFrame = ... / signupButtonFrame = ...!
答案 1 :(得分:1)
这不是一个块,阻止以^开头。 我相信这段代码:
({
CGRect frame = avatar.frame;
frame.origin.y = CGRectGetMaxY(self.view);
frame;
});
是一种创建CGRect的方法。