2013-07-10 73 views
1

我知道,如果我用iOS SDK - 使用插座進行連接的正確方法?

@interface TPN : UIViewController{ 

    IBOutlet UIView *testView; 
} 

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

我知道,第一個是本質上是隻在類內訪問的私有變量。而第二個「@property」能夠從實例化的對象中訪問。在大多數教程中,我發現人們傾向於設置屬性,當他們通常從課堂內部改變出口時,我覺得很奇怪。我應該遵循什麼指導原則?

回答

2

你不再需要指定伊娃。也沒有必要使用@synthesize。

使用屬性,但要確保它是弱不強

@interface TPN : UIViewController 

@property (weak, nonatomic) IBOutlet UIView *testView; 

在實現您現在可以訪問伊娃爲_testView。

對於私有財產(以上爲公),而不是把@property一個類別內的執行文件:

#import "TPN.h" 
@interface TPN() 

@property (weak, nonatomic) IBOutlet UIView *testView; 

@end 

@implementation TPN 
.... 
+0

我如何使這是一個公共或私人財產? – hamobi

+0

要添加到@Khansen,只能在Xcode 4.5及更高版本上使用。在較舊的Xcode中,你必須將systhesize和property定義爲強/保留 –

+0

,但我認爲OP的一部分問題是,爲什麼要使用屬性而不僅僅是實例變量? – newacct

0

你是對的。如果你只打算在類中使用實例變量,那麼將它變成一個屬性是沒有意義的。屬性簡單地意味着一對getter/setter。如果您在獲取/設置時不需要特別做任何事情,則可以直接使用實例變量。

在ARC之前,在各處使用屬性都有一個好處,即對對象指針進行內存管理更容易 - 聲明爲retain的屬性會在您設置時自動釋放並保留,沒有您自己輸入代碼就像直接使用實例變量一樣。但是,現在在ARC中,編譯器會在您分配時爲您執行此操作,如果它是強實例變量。所以這個好處現在是無關緊要的。

我懷疑人們使用網點屬性的原因很多是因爲在幾乎所有的教程和示例中都會使用該屬性(可能是因爲之前的保留內存管理帶來的好處),並且他們根本就沒有意識到他們可以做不同的事情。