繁体   English   中英

设置框架时为弱

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM