La semaine dernière, J'ai écrit au sujet de la différence entre l'utilisation du mot-clé IBOutlet en face de votre déclaration de variable par exemple, contre le mettre dans la déclaration de propriété. Après une petite enquête, je suis venu à la conclusion qu'il n'y avait pas de différence, et il a été purement stylistique.
Un lecteur m'a envoyé quelques informations qui m'a montré que j'avais tort à ce sujet étant purement stylistique. Il ya au moins un scénario où il importe bien où vous mettez le mot-clé, et c'est si vous utilisez un nom différent pour votre variable sous-jacente que pour la propriété. Donc, si vous définissez une variable
Il ne semble pas faire du mal à rien si Interface Builder va directement à la variable d'instance - ce fut la façon dont les choses fonctionnent dans les jours précédant les propriétés, mais vous devez être conscient du fait que ce n'est pas en utilisant votre mutator pour relier la sortie. En conséquence, si vous n'utilisez pas le même nom pour vos propriétés et les variables d'instance sous-jacente de vos points de vente, je vous recommandons fortement de mettre votre mot-clé IBOutlet dans la déclaration des biens.
Merci, Kevin, pour amener à mon attention!
Un lecteur m'a envoyé quelques informations qui m'a montré que j'avais tort à ce sujet étant purement stylistique. Il ya au moins un scénario où il importe bien où vous mettez le mot-clé, et c'est si vous utilisez un nom différent pour votre variable sous-jacente que pour la propriété. Donc, si vous définissez une variable
UIView *_myView;Et vous alors définir une propriété
@property (nonatomic, retain) UIView *myView;Et de synthétiser la propriété d'utiliser cette variable
@synthesize myView=_myView;Puis, dans ce cas, il est très bien les questions où vous mettez le mot-clé. Si vous mettez le mot clé IBOutlet en face de la variable d'instance, Interface Builder ne sera pas réaliser qu'il ya un accesseur et mutateur pour cette variable - il va chercher un mutator appelé set_myView: et complètement manquer le fait qu'il y est un mutator appelé setMyView :. Par conséquent, le mutator ne sera pas utilisée et la sortie ne seront pas conservées.
Il ne semble pas faire du mal à rien si Interface Builder va directement à la variable d'instance - ce fut la façon dont les choses fonctionnent dans les jours précédant les propriétés, mais vous devez être conscient du fait que ce n'est pas en utilisant votre mutator pour relier la sortie. En conséquence, si vous n'utilisez pas le même nom pour vos propriétés et les variables d'instance sous-jacente de vos points de vente, je vous recommandons fortement de mettre votre mot-clé IBOutlet dans la déclaration des biens.
Merci, Kevin, pour amener à mon attention!
Aucun commentaire:
Enregistrer un commentaire