Une propriété en lecture seule avec un getter avoir une variable d'instance synthétisé?

J'ai une situation où je ne veux pas les variables d'instance de synthèse, un ensemble de propriétés (je suis de les gérer via les paramètres Utilisateur et Trousseau).

Si j'ai le texte suivant, _loginUsername va être synthétisés:

@property (nonatomic, readonly) NSString *loginUsername;

Et je sais que si j'avais la suite, une variable d'instance ne serait pas être synthétisés, parce que la déclaration est le fait de dire "je vais prendre soin de moi-même":

@property (nonatomic, getter = loginUsername, setter = setLoginUsername) NSString *loginUsername;

Est le comportement le même pour une propriété en lecture seule avec un getter?:

@property (nonatomic, readonly, getter = loginUsername) NSString *loginUsername;

Aura-t-il un _loginUsername synthétisé pour la finale de la déclaration de la propriété? Je suis assez convaincu qu'il n'y en aura pas, mais je vais essayer d'obtenir une meilleure compréhension de la propriété des attributs veux donc m'assurer que je ne suis pas loin.

Points de Bonus pour expliquer que ce qui est connu au moment de la compilation (pas de triche et de la vérification dans Xcode!).

Je n'ai pas de @synthesize états dans mon fichier d'implémentation.

  • "pas de triche et de la vérification dans Xcode!" attendez, quoi?
  • ok ok, vous pouvez vérifier Xcode 🙂 mais je voudrais savoir comment il sait avant l'exécution. Je pense juste simple analyse statique - je ne peux pas imaginer un meilleur scénario complexe qui en serait la conséquence de l'incertitude au moment de la compilation
  • Je ne connais pas les spécificités assez bien pour répondre à cette question, mais je vais ajouter qu'avec @property (nonatomic, readonly, getter = loginUsername) NSString *loginUsername; je peux toujours compiler le code qui a _loginUsername = nil; dans ma mise en œuvre. De plus, je peux toujours le faire quand j'ai @property (nonatomic, readonly, getter = loginUsername, setter = setLoginUsername:) NSString *loginUsername; Il semble que les docs sont des menteurs!
  • Xcode IntelliSense doit dire si il est disponible, il suffit de taper `_loginUsername " après avoir personnalisé des accesseurs et des mutateurs défini. Je parie qu'il va se plaindre!
  • Je l'ai juste essayé, et c'est une erreur de compilation si vous avez à obtenir ou les paramètres définis dans votre fichier de mise en oeuvre et de toujours essayer de l'utiliser _loginUsername. Il suffit de régler sur @property déclaration ne rien faire!!!
  • Hum, c'est étrange parce que j'ai une erreur de compilation immédiatement lors de la référence à _loginUsername. Même message d'erreur qu'il s'agisse d'une propriété de la classe ou de l'extension de classe.
  • Yep, même pour moi @YasKuraishi, i.imgur.com/KcmNcrh.png

InformationsquelleAutor bdalziel | 2014-03-06