Outils pour utilisateurs

Outils du site


objc:proprietes

Propriétés, attributs, constantes

Propriétés

  • readonly / readwrite → la propriété est en lecture seule ou lecture/écriture (par défaut). En lecture seule, la synthétisation ne crée qu'un accesseur et pas de mutateur.
  • strong : lire “Je suis propriétaire de cet objet” → applicable aux objets
  • weak : référence faible. Pointeur qui n'implique aucune notion de propriétaire. Exemple:
__weak TYPE *variable; // Pour une variable d'instance
@property (weak) TYPE *variable; // Pour une propriété 
  • copy → crée une copie de l'objet passé en paramètre
    • la copie est immuable, même si l'objet passé en paramètre est mutable (La copie d'un NSMutableString sera un NSString)
    • Si l'on souhaite créer une copie mutable, il est nécessaire d'implémenter manuellement le mutateur en utilisant par exemple la méthode mutableCopy.
    • Si l'objet passé en paramètre n'est pas mutable (la copie n'a alors aucun intérêt puisque le paramètre ne peut pas être modifié), la copie n'est pas réalisée → copy appelle copyWithZone qui retourne lui-même.

La plupart des classes n'implémentent pas copyWithZone

Constantes

Version simplissime

  • Le code
enum VitessesVoiture 
{
    valeur1 = 1,
    valeur2 = 2, 
    valeur3 = 5 
};
  • l'utilisation
@interface Voiture : NSObject 
{
    enum VitessesVoiture speed; 
}
 
- (void)setVitesse:(enum VitessesVoiture)x; 
@end

Avec un typedef

  • Le code
typedef enum 
{
    valeur1 = 1,
    valeur2 = 2, 
    valeur3 = 5 
} VitessesVoiture;
  • l'utilisation
@interface Voiture : NSObject 
{
    VitessesVoiture speed; 
}
 
- (void)setVitesse:(VitessesVoiture)x; 
@end

On peut même omettre les valeurs, qui finalement ne servent pas à grand chose. Le compilateur s'en occupera lui-même.

typedef enum 
{
    valeur1,
    valeur2, 
    valeur3 
} VitessesVoiture;
objc/proprietes.txt · Dernière modification: 2016/10/17 13:56 (modification externe)