3 回答

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

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