iPhone - Apple默认示例代码缺少一些变量?

时间:2011-03-22 11:10:59

标签: iphone properties class-design instance-variables

在XCode 4中,当您创建一个新的View-base-application项目时,这里是AppDelegate的.h:

#import <UIKit/UIKit.h>

@class TestAppleProjectViewController;

@interface TestAppleProjectAppDelegate : NSObject <UIApplicationDelegate> {

}

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

@end

.m上的一些项目:

@implementation TestAppleProjectAppDelegate

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

    - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
    { 
        self.window.rootViewController = self.viewController;
        [self.window makeKeyAndVisible];
        return YES;
    }

我可以看到没有变量的属性......
我可以看到使用类中不存在的var名称进行合成...
我可以看到对这些属性的调用....

但是......变量在哪里? 为什么这样的代码有效? 是否不再需要在类中定义变量?属性是否足够?

2 个答案:

答案 0 :(得分:2)

实际上,当您将var声明为属性时,您不必再将其声明为var。我们不得不再次声明它的先前版本是以前版本的Xcode中的一个错误。现在它已得到纠正。

这只是一个习惯,更少的代码重复,这是好的。 (默认情况下,它创建了隐藏的var,其名称以“_”开头)。

答案 1 :(得分:1)

我不确定这个......我想当你写@synthesize prop=_var时,它会自动为属性prop创建一个名为_var的私有实例变量。