2013-07-17 40 views
3

通常情況下,只有當其他類訪問時,我纔會使用'property'插座和變量。否則它在接口塊內聲明。但我看到有些人正在創建'財產'出口和變量,但他們沒有在另一個班級訪問這些。因此,任何人都可以解釋,如果我們不從另一個班級獲取某些出口或變量,爲什麼我們需要「財產」出口和變量?爲什麼我們需要iOS中的property outlet和變量?

+0

http://stackoverflow.com/questions/14236799/should-i-declare-variables-in-interface-or-using-property-in-objective-c-arc – Balu

回答

2

如果您不需要從其他類訪問出口,你不需要做一個屬性。你可以把它的實例變量在您的@implementation

@implementation ViewController { 
    IBOutlet UIView *someView; 
} 

... 

有些人不喜歡使用簡單的實例變量,喜歡經常使用的特性,即使是私人數據。這是非常有用的,如果你不使用ARC使用屬性而不是原始實例變量,因爲你可以依靠屬性setter保留和釋放它們的對象。如果您正在使用ARC,這是不是一個問題。

如果你想使用的屬性,但你不想申報財產在你@interface,你可以在你.m文件的頂部放一個類擴展(你上面的@implementation),並把財產有:

@interface ViewController() { 

@property (nonatomic, strong) IBOutlet UIView *someview; 

@end 

@implementation ViewController 

... 
2

它們被聲明爲可以在NIB/XIB編輯器(也稱爲Interface Builder)中公開。

這使您可以在筆尖編輯視圖對象的屬性相關聯,與廈門國際銀行在初始化時,讓你可以輕鬆地從你的類初始化一次引用這些情況下,取檔將設置的屬性。

+0

或者,在舊的情況下,自動處理內存語義。 – borrrden

+0

我想他是在問iVar和屬性之間的區別 – Desdenova

1

我想你是問關於屬性。屬性用於幫助您編寫getter和setter。

爲什麼我們需要getter setter?有一個地方我們可以訪問一個變量,以便將來如果我們需要添加一些規則,我們可以在不改變整個代碼的情況下做到這一點。

這個問題是覆蓋在深入Why use getters and setters?

奧特萊斯是InterfaceBuilder的訪問屬性。