2010-09-20 4 views
1

J'avais quelque chose comme le code suivant dans un projet sur lequel j'ai travaillé récemment. n'a pas été défini nulle partEst-ce un comportement indéfini avec les propriétés Objective-C?

@interface DetailsViewController : UIViewContoller { 
    UIView* headerView_; 
} 
@property (nonatomic, retain) UIView* headerView; 
@end 

@implementation DetailsViewController 
@synthesize headerView = undefinedVariableName_; 
// ... 
@end 

undefinedVariableName_ dans le projet et était en fait une faute de frappe beaucoup moins évidente.

Cela compilé parfaitement bien (pas d'erreurs ou d'avertissements) et fonctionnait même bien sur iOS 4. Je n'ai pas attrapé cette erreur jusqu'à ce que le programme s'est brisé sur le firmware 3.1.3.

Est-ce que quelqu'un sait si le comportement ci-dessus est considéré indéfini? Y a-t-il un moyen d'avoir le compilateur attraper de telles erreurs? Dans l'environnement d'exécution Objective-C moderne, vous n'avez pas besoin de déclarer les ivars vous-même, le compilateur les crée pour vous au point @synthesize

Répondre

1

S'il s'est écrasé sur l'ancien iOS, cette version ne supporte probablement pas encore l'exécution moderne.

+0

Je crois que iOS a toujours utilisé l'exécution moderne. http://developer.apple.com/library/ios/#documentation/cocoa/conceptual/ObjCRuntimeGuide/Articles/ocrtVersionsPlatforms.html –

+0

Je pense que @David a un bon point, mais merci @Sven pour avoir fait remarquer que le compilateur peut effectivement créer des ivars automatiquement. –

Questions connexes