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