Utiliser les property

retour au sommaire

Depuis Objective-C 2.0, il existe une nouvelle fonction du langage, qui permet de simplifier grandement l’écriture des accesseurs et mutateurs.

Il suffit d’utiliser la commande @property dans la déclaration (fichier xxx.h) et d’utiliser la commande @synthesize dans l’implémentation (fichier xxx.m), pour imposer au compilateur l’écriture des « setter » et « getter » pour les differents membres de l’application.

Par exemple :

fichier MaClasse.h

#import

@interface MaClasse: NSObject{

IBOutlet UITextLabel *monLabel;
NSString *unePhrase;
}

@property IBOutlet UITextLabel *monLabel;
@property NSString *unePhrase;

@end

ensuite dans l’implémentation  du fichier MaClasse.m :

#import "MaClasse.h"
@implementation MaClasse

@synthesize monLabel, unePhrase;

Ce qui simplifie grandement le code à écrire pour gérer ses propriétés d’instances

A utiliser imperativement !!

2 – Utiliser des attributs

Il est possible (et recommandé…) d’utiliser des attributs pour gérer les propertys :

On peut définir le nom des accesseurs/mutateurs,

Les propriétés de lecture,

Le type de comptage des références,

l’atomicité des références ( c’est à dire que les propriétés sont « verrouillées » ou pas dans le cas d’utilisation multithreads : nonatomic = les valeurs sont simplement renvoyées par les accesseurs/mutateurs, atomic = les valeur sont verrouillées et doivent êtres déverouillées pour l’usage).

Exemple  :

#import

@interface MaClasse: NSObject{

IBOutlet UITextLabel *monLabel;
NSString *unePhrase;
}

@property(nonatomic, retain) IBOutlet UITextLabel *monLabel;
@property(readOnly) NSString *unePhrase;

@end

Ici dans le cas de monLabel, il est demandé une utilisation nonAtomic, et la mémoire est fixée à retain pour une libération manuelle.

Pour unePhrase, le paramètre est fixé à readOnly, ce qui indique au compilateur de ne créer que le « getter » du paramètre et pas de « setter« .

Laisser un commentaire

Entrez vos coordonnées ci-dessous ou cliquez sur une icône pour vous connecter:

Logo WordPress.com

Vous commentez à l'aide de votre compte WordPress.com. Déconnexion / Changer )

Image Twitter

Vous commentez à l'aide de votre compte Twitter. Déconnexion / Changer )

Photo Facebook

Vous commentez à l'aide de votre compte Facebook. Déconnexion / Changer )

Photo Google+

Vous commentez à l'aide de votre compte Google+. Déconnexion / Changer )

Connexion à %s

%d blogueurs aiment cette page :