iPhone - Пример кода Apple по умолчанию отсутствует некоторые переменные? - PullRequest
2 голосов
/ 22 марта 2011

В XCode 4, когда вы создаете новый проект View-base-application, вот .h AppDelegate:

#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 ]

2 голосов
/ 22 марта 2011

Фактически, когда вы объявляете var как свойство, вам не нужно объявлять его снова как var.Предыдущий компромисс, в котором мы должны были объявить его снова, был ошибкой в ​​предыдущих версиях Xcode.И теперь это исправлено.

Это просто привычка, меньше дублирования кода и это хорошо.(По умолчанию создается ах скрытая переменная с тем же именем, начинающимся с "_").

1 голос
/ 22 марта 2011

Я не уверен в этом ... Я думаю, что когда вы напишите @synthesize prop=_var, он автоматически создаст личную переменную экземпляра с именем _var для свойства prop.

...