Más o menos. Estas líneas en las .h declarar la existencia de dos variables públicas ventana y controlador de llamadas:
@property (strong, nonatomic) UIWindow window;
@property (strong, nonatomic) ViewController controller;
embargo, estas líneas sólo se cuentan la existencia de las variables, que en realidad no crean. Depende de la clase implementar esto como lo desee: pueden ser variables virtuales, por ejemplo, que en realidad no existen, pero llaman a métodos que crean datos de forma programática o los cargan desde una base de datos o algo así.
Estas líneas en el archivo .m realmente crean ("sintetizan") las variables.
@synthesize window = _window;
@synthesize viewController = _viewController;
Lo que dicen estas líneas es que el nombre de la variable interna es _window, pero el nombre público de la variable es window.Eso significa que dentro de la clase se puede acceder a la variable directamente diciendo
_window = something;
Pero externamente hay que acceder a él mediante
appDelegate.window = something;
Porque eso es su nombre pública. También puede acceder internamente a la clase usando self.window.
Otro hecho interesante de Objective-C es que el uso de la sintaxis de punto para acceder a las variables de esta manera es realmente una forma práctica de llamar a los métodos setter y getter para acceder a ellos. Así que la sintetizan, además de crear una variable llamada _window, está también la definición de los dos métodos siguientes:
- (void)setWindow:(UIWindow *)window; // to set the _window variable
- (UIWindow *)window; // to get the _window variable
Y usted puede llamar a estos métodos directamente si se quiere, usando
[self setWindow:someValue];
UIWindow *window = [self window];
http://stackoverflow.com/q/7174277/ http://stackoverflow.com/q/822487/ http://stackoverflow.com/q/2371489/ http://stackoverflow.com/q/6139593/ http: // stackoverflow .com/search? q =% 5Bobjc% 5D + guión bajo + propiedad & enviar = buscar –