2011-06-10 79 views
3

我刚刚下载了最新的iOS SDK(4.3),并注意到当我启动基于窗口的应用程序时,UIWindow未在头文件中声明,它仅作为属性提及。UIWIndow未声明iOS 4.3 AppDelegate

#import <UIKit/UIKit.h> 

@interface GleekAppDelegate : NSObject <UIApplicationDelegate> { 
    IBOutlet UILabel *label; 
} 

@property (nonatomic, retain) IBOutlet UIWindow *window; 

@end 

我所期望的,从旧的SDK的记得,那上面的代码应该是

#import <UIKit/UIKit.h> 

@interface GleekAppDelegate : NSObject <UIApplicationDelegate> { 
    IBOutlet UILabel *label; 

    UIWindow *window; 
} 

@property (nonatomic, retain) IBOutlet UIWindow *window; 

@end 

是,仅仅SDK的一个新功能?

感谢

回答

3

新的Objective-C运行具有合成高德没有明确声明他们的能力。从Runtime Difference in The Objective-C Programming Language

一般性质 的行为是既现代又传统 运行时间相同(见Objective-C运行 编程指南中的“运行时版本和 平台”)。有一个关键 区别:现代运行时间 支持实例变量合成 而传统运行时不支持。

...

随着现代运行时,如果你不 提供一个实例变量中, 编译器增加了一个给你。

Runtime Versions and Platforms in Objective-C Runtime Programming Guide

  • Phone应用程序,并在Mac OS X v10.5的64位程序,后来 使用运行时的现代版。

  • 其他程序(Mac OS X桌面上的32位程序)使用旧版本的运行时版本 。

也有看看这个问题:

+0

+1:非常好的答案有很多的信息。 – 2011-06-10 18:38:17

+0

@Jesse:谢谢:) – albertamg 2011-06-10 18:51:42