2011-04-10 31 views
0

我正在嘗試使用Objective-C和Xcode 4,並且有點不明白。由Xcode生成的UIApplicationDelegate問題

在h文件:

@interface viewexampleAppDelegate : NSObject <UIApplicationDelegate> { 
} 
@property (nonatomic, retain) IBOutlet UIWindow *window; 
@property (nonatomic, retain) IBOutlet viewexampleViewController *viewController; 
@end 

在.m文件:

@synthesize window=_window; 
@synthesize viewController=_viewController; 

所以問題 下面的代碼由對Xcode的基於視圖的iPhone應用程序產生的是: _window和_viewController來自哪裏?我沒有看到它們的任何聲明或初始化。

回答

2

Objective-C允許聲明屬性而不必顯式聲明相應的支持實例變量。相反,實例變量根據需要進行合成。在這種情況下,默認情況下,支持實例變量的名稱與聲明的屬性名稱相同。因此,假設類沒有宣佈被稱爲something的實例變量,

@synthesize something; 

將隱式地創建一個實例變量也稱爲something

也可以讓實例變量的命名與聲明的屬性不同,例如,

@synthesize something = _something; 

然後,編譯器創建的情況下,稱爲_something背襯的實例變量一個不存在。

關於初始化,這兩個屬性都是IBOutlets。這通常意味着它們的相應實例是從nib文件加載的,並且nib文件具有將這些屬性連接到實際對象的插口。

+0

非常感謝!解開我的神祕! – Wudong 2011-04-12 09:18:35