我們可以像這樣爲IBOutlet聲明。我能知道1和2聲明方法風格有什麼區別/優點嗎?聲明IBoutlet取決於它聲明的位置之間的區別
@interface CurrentJobDetailsVC()
{
IBOutlet UISegmentedControl *segControl; // -> 1
}
@property (weak, nonatomic) IBOutlet UISegmentedControl *segControl; // -> 2
@end
我們可以像這樣爲IBOutlet聲明。我能知道1和2聲明方法風格有什麼區別/優點嗎?聲明IBoutlet取決於它聲明的位置之間的區別
@interface CurrentJobDetailsVC()
{
IBOutlet UISegmentedControl *segControl; // -> 1
}
@property (weak, nonatomic) IBOutlet UISegmentedControl *segControl; // -> 2
@end
這是全球相同的預期2差異:
1 - 聲明一個iVar。
IBOutlet UISegmentedControl *segControl;
相當於__strong IBOutlet UISegmentedControl *segControl;
[segControl someMethod]
。2 - 聲明它作爲一個屬性
self.segControl
,你可以使用它像[self.segControl someMethod]
[_segControl someMethod]
我可以知道_segControl和self.segControl有什麼區別嗎? –
'_segControl'是一個iVar(直接變量)和'self.segControl'使用屬性。例如,如果調用'self.segControl = nil'這相當於'[self setSegControl:nil]',那麼您使用由編譯器合成的設置程序來設置屬性,但在調用方法時可以使用第一個或第二個。 – bsarr007
謝謝。 :)我不知道我什麼時候會使用伊娃或財產。 –
1不能從其他類訪問,否則2可訪問。 1應該是...
__weak IBOutlet UISegmentedControl *segControl;
@property
將自動合成並做二傳手/自動吸氣劑。
@property作爲公共對象工作,可以在類內部訪問,其中內部出口被視爲不在類之外訪問的私有對象。 – Max