2014-07-21 83 views
0

我們可以像這樣爲IBOutlet聲明。我能知道1和2聲明方法風格有什麼區別/優點嗎?聲明IBoutlet取決於它聲明的位置之間的區別

@interface CurrentJobDetailsVC() 
{ 
    IBOutlet UISegmentedControl *segControl; // -> 1 
} 
@property (weak, nonatomic) IBOutlet UISegmentedControl *segControl; // -> 2 

@end 
+0

@property作爲公共對象工作,可以在類內部訪問,其中內部出口被視爲不在類之外訪問的私有對象。 – Max

回答

0

這是全球相同的預期2差異:

1 - 聲明一個iVar。

  • IBOutlet UISegmentedControl *segControl;相當於__strong IBOutlet UISegmentedControl *segControl;
  • 你只有伊娃,你可以用它訪問[segControl someMethod]

2 - 聲明它作爲一個屬性

  • 你有一個屬性self.segControl,你可以使用它像[self.segControl someMethod]
  • 你也有伊娃,你可以使用它像[_segControl someMethod]
+0

我可以知道_segControl和self.segControl有什麼區別嗎? –

+0

'_segControl'是一個iVar(直接變量)和'self.segControl'使用屬性。例如,如果調用'self.segControl = nil'這相當於'[self setSegControl:nil]',那麼您使用由編譯器合成的設置程序來設置屬性,但在調用方法時可以使用第一個或第二個。 – bsarr007

+0

謝謝。 :)我不知道我什麼時候會使用伊娃或財產。 –

0

1不能從其他類訪問,否則2可訪問。 1應該是...

__weak IBOutlet UISegmentedControl *segControl; 

@property將自動合成並做二傳手/自動吸氣劑。