2010-11-09 32 views
1

Je suis en train d'étudier le code source exemple d'application « Les éléments » et je vois que dans AtomicElement.h il y a quatre propriétés déclarées en lecture seule:Quelle est la différence entre l'utilisation d'une méthode et d'une propriété?

@property (readonly) UIImage *stateImageForAtomicElementTileView; 
@property (readonly) UIImage *flipperImageForAtomicElementNavigationItem; 
@property (readonly) UIImage *stateImageForAtomicElementView; 
@property (readonly) CGPoint positionForElement; 

Dans le fichier de mise en œuvre, ils ressemblent à

- (UIImage *)stateImageForAtomicElementTileView { 
    return [UIImage imageNamed:[NSString stringWithFormat:@"%@_37.png",state]]; 
} 

Pouvez-vous préciser les raisons de faire cela? Pourquoi ne pas utiliser quelque chose comme

- (UIImage*) stateImageForAtomicElementTileView; 

dans le fichier d'en-tête et accéder ensuite comme [element stateImageForAtomicElementTileView]; au lieu de element.stateImageForAtomicElementTileView?

Répondre

0

Je ne pense pas qu'il y ait une raison technique pour choisir un idiome par rapport à l'autre, ils peuvent tous les deux être utilisés de la même manière. C'est plus une question de sémantique.

Une classe possède à la fois des données et peut effectuer des opérations (généralement sur lesdites données). Je pense que vous devriez regarder à l'aide d'une propriété, et avoir l'accès . au lieu de [ ] plus comme un moyen de documenter l'objectif du stateImageForAtomicElementTileView.

Il est une image qui fait partie de la classe (le fait is't étant généré à la volée à partir d'une ressource doit être considérée comme un détail de mise en œuvre)

+0

Bon, je suis content de cette réponse :) – phi