UIWIndow未声明iOS 4.3 AppDelegate

时间:2011-06-10 17:51:15

标签: iphone ios xcode ipad

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

#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的新功能吗?

由于

1 个答案:

答案 0 :(得分:3)

新的Objective-C运行时能够在不明确声明的情况下合成ivars。来自Runtime Difference in The Objective-C Programming Language

  

一般来说属性的行为   现代和遗产都是一样的   运行时(请参阅“运行时版本和运行时”)   平台“在Objective-C运行时   编程指南)。有一把钥匙   区别:现代运行时   支持实例变量合成   而遗留运行时没有。

...

  

使用现代运行时,如果不这样做   提供一个实例变量,   编译器为你添加一个。

来自Runtime Versions and Platforms in Objective-C Runtime Programming Guide

  
      
  • Mac OS X v10.5及更高版本上的手机应用程序和64位程序   使用现代版本的运行时。

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

  •   

还要看看这个问题: