3 回答

TA貢獻(xiàn)1848條經(jīng)驗 獲得超6個贊
從實際角度來看,在IOS和OSX中,應(yīng)將出口定義為已聲明的屬性。插座通常應(yīng)該是弱的,除了那些從文件的所有者到頂級對象在一個nib文件(或者,在IOS中,一個故事板場景),應(yīng)該是強(qiáng)大的。因此,默認(rèn)情況下,您創(chuàng)建的出口通常是弱的,因為:
例如,您創(chuàng)建的到視圖控制器視圖或窗口控制器窗口的子視圖的出口,是不暗示所有權(quán)的對象之間的任意引用。
強(qiáng)出口通常由框架類指定(例如,UIViewController的視圖出口或NSWindowController的窗口出口)。 @property (weak) IBOutlet MyView *viewContainerSubview;@property (strong) IBOutlet MyOtherClass *topLevelObject;

TA貢獻(xiàn)1804條經(jīng)驗 獲得超2個贊
weak
strong
UIViewController
在iOS 6之前,如果您保持到控制器視圖的子視圖的強(qiáng)鏈接,如果視圖控制器的主視圖被卸載,那么只要視圖控制器在附近,這些視圖就會保持子視圖。 從iOS 6開始,視圖不再被卸載,而是加載了一次,然后只要它們的控制器在那里,就會繼續(xù)運行。所以強(qiáng)大的屬性就不重要了。它們也不會創(chuàng)建強(qiáng)引用周期,因為它們指向強(qiáng)引用圖。
@property (nonatomic, weak) IBOutlet UIButton *button;
@property (nonatomic) IBOutlet UIButton *button;
使用 weak
清楚地說明控制器不想擁有按鈕的所有權(quán)。 但忽略了 weak
在iOS 6中,在沒有視圖卸載的情況下不會受到傷害,而且更短。有些人可能會指出,這也是更快,但我還沒有遇到一個應(yīng)用程序太慢,因為 weak
IBOutlet
S. 不使用 weak
可能被視為錯誤。
- 3 回答
- 0 關(guān)注
- 488 瀏覽
添加回答
舉報