Je lis ce document pour apprendre Objective-C: https://developer.apple.com/library/mac/#documentation/Cocoa/Conceptual/ProgrammingWithObjectiveC/CustomizingExistingClasses/CustomizingExistingClasses.html#//apple_ref/doc/uid/TP40011210-CH6-SW1re-déclarer propriété ReadOnly dans les extensions de classe
I le sujet "Utiliser des extensions de classe pour masquer les informations privées" (page 73 du pdf), il dit: Class extensions are often used to extend the public interface with additional private methods or properties for use within the implementation of the class itself. It’s common, for example, to define a property as readonly in the interface, but as readwrite in a class extension declared above the implementation, in order that the internal methods of the class can change the property value directly.
Ce que je ne comprends pas dans cette déclaration est que puisque nous pouvons changer la propriété readonly à partir de toute méthode privée définie dans l'extension de classe sans que cette propriété soit re-déclarée comme readwrite dans l'extension de classe, qu'est-ce qu'elle obtient par re-déclaration de cette propriété en tant que readwrite?
J'ai une propriété comme '@property (lecture seule) NSString * Faire! Et je. était capable de le changer simplement par cette méthode d'instance: '- (void) setMyMake: (NSString *) myMake { Make = myMake; }'. Je n'ai même pas eu besoin de '_ivar' Alors pourquoi ne puis-je pas toujours utiliser 'Make = myMake;' dans toutes les méthodes d'extension de classe privée? Pourquoi dois-je faire 'self.Make = myMake;'? – PnotNP
Aussi je ne sais pas pourquoi '_Make = myMake;' dit que '_Make' est un non déclaré Je suis en train de synthétiser la propriété 'Make' dans ma mise en oeuvre – PnotNP
en utilisant self.myv ar = newvar vous utilisez le code autogénéré, qui traite automatiquement aussi avec le personnel de gestion de la mémoire, qui entrent en compte en particulier lorsque vous définissez une nouvelle valeur. De plus, il s'agit d'un identifiant non déclaré car vous n'avez probablement pas utilisé les extensions redéclarant comme readwrite (juste deviner). – Leonardo