Une propriété et une variable d'instance sont des choses différentes; une propriété représente un état exposé par votre classe, alors qu'une variable d'instance est une façon d'implémenter un état pour votre classe.
Lorsque vous avez écrit block.center.y
vous accédiez la variable d'instance nomméeblock
, pas invoquer le getter de la propriété. Pour appeler le getter de la propriété, vous devez toujours utiliser soit point ou la syntaxe des messages, tels que:
CGFloat centerY;
centerY = self.block.center.y; // sends -block getter to self
centerY = [self block].center.y; // sends -block getter to self
Voici un exemple où tous ces diffèrent: isEnabled_
est la variable d'instance, enabled
est la propriété et -isEnabled
est le getter méthode invoquée par la propriété:
@interface View : NSObject {
@private
BOOL isEnabled_;
}
@property (getter=isEnabled) BOOL enabled;
@end
@implementation View
@synthesize enabled = isEnabled_;
@end
l'attribut getter=isEnabled
indique au compilateur de générer -isEnabled
messages lors de l'obtention de la propriété enabled
. Le @synthesize
définit la propriété enabled
comme étant soutenue par la variable d'instance isEnabled_
.
Vous pouvez donc accéder à la propriété de cette façon:
BOOL shouldDrawView;
shouldDrawView = someView.enabled; // sends -isEnabled to someView
shouldDrawView = [someView isEnabled]; // also sends -isEnabled to someView
vous n'utilisez pas le getter de toute façon. Pour utiliser le getter, vous devez utiliser self.block = foo; –
fluchtpunkt: Vous devriez poster une réponse à la question, pas simplement répondre par un commentaire. –