簡體   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