2011-06-10 5 views
3

Je viens de télécharger le nouveau SDK iOS (4.3) et a remarqué que quand je commence une fenêtre application basée sur le UIWindow n'est pas déclarée dans le fichier d'en-tête, il est mentionné que comme une propriété.UIWindow Non indiquée iOS 4.3 AppDelegate

#import <UIKit/UIKit.h> 

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

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

@end 

Je me attends, et souvenez-vous de plus âgés années SDK, que le code ci-dessus doit être

#import <UIKit/UIKit.h> 

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

    UIWindow *window; 
} 

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

@end 

Est-ce juste une nouvelle fonctionnalité du SDK?

Merci

Répondre

3

Le nouveau moteur d'exécution Objective-C a la capacité de synthétiser Ivars sans les déclarer explicitement. De Runtime Difference in The Objective-C Programming Language:

En général, le comportement des propriétés est identique sur les deux modernes et anciens runtimes (voir « Versions d'exécution et plates-formes » en Objective-C Runtime Guide de programmation). Il y a une différence clé : le moteur d'exécution moderne supporte par exemple la synthèse variables alors que le temps d'exécution de l'héritage ne fonctionne pas. Avec le moteur d'exécution moderne

...

, si vous ne fournissez une variable d'instance, le compilateur ajoute pour vous.

De Runtime Versions and Platforms in Objective-C Runtime Programming Guide:

  • applications téléphoniques et des programmes 64 bits sur Mac OS X v10.5 et plus tard utiliser la version moderne de l'exécution. Les autres programmes (programmes 32 bits sur le bureau Mac OS X) utilisent la version héritée du runtime.

ont également un coup d'œil à cette question:

+0

+1: très bonne réponse avec beaucoup d'informations. –

+0

@Jesse: Merci :) – albertamg

Questions connexes