2011-08-06 66 views
2

例如一個,我聲明接口支架內部的對象{}像:Xcode4 - 聲明在頭文件中的對象

@interface testViewController : UIViewController { 
    IBOutlet UILabel * myLabel; 
} 
@property (retain, nonatomic) UILabel *myLabel; 

@end 

和例如兩個,我聲明一個對象的inferface支架{}像外:

@interface testViewController : UIViewController { 
} 
@property (retain, nonatomic) IBOutlet UILabel *myLabel; 

@end 

我運行代碼,結果是一樣的,所以我想問的是內部或接口支柱{}外decalare對象的不同?

感謝

+0

的可能重複[聲明IBOutlet中內部或外部@interface?](http://stackoverflow.com/questions/4635190/declaring-iboutlet-inside-or-outside - 界面) – Abizern

+0

這裏是你的** [解決方案.. **](http://stackoverflow.com/questions/4635190/declaring-iboutlet-inside-or-outside-interface「聲明IBOutlet內部或外部@界面?」 ) –

回答

1

現代Objective-C運行時(64位Mac OS X和iOS)將爲您聲明的屬性生成後備存儲,當您使用它們時,它們就是@synthesize。所以你不需要在括號內聲明它們。

如果您聲明的iVar不是一個屬性,只會被該類使用,那麼他們需要聲明。這是一個好主意,以紀念這些@private

@interface MyClass : NSObject { 
@private 
    NSString *privateString; 
} 
@property (nonatomic, copy) NSString *publicString; // be sure to @synthesize this 
@end 
0

在第二個例子中,你只申報財產。 Xcode會自動聲明對象。