J'ai une classe, et dans l'en-tête je définis ceci:Comment accéder à une propriété de type BOOL?
@interface MyViewController : UIViewController {
BOOL blackBackground;
}
@property(nonatomic, assign) BOOL blackBackground;
Dans la mise en œuvre, j'ai le @synthesize pour blackbackground.
Ensuite, j'instancier cet objet et faire:
[myViewController setBlackBackground:YES];
maintenant que booléen doit avoir la valeur OUI (ou vrai)). Mais, je vérifie:
if ([myViewController blackBackground]) {
NSLog(@"yep, it's true");
}
cependant, il ne semble pas répondre ou retourner quoi que ce soit, que ce soit la valeur ne soit pas définie ou je ne peux pas appeler/vérifier. Une idée de ce qui ne va pas?
en fait, il était une faute de frappe stupide dans mon code! Merci! Chose étrange, je l'ai eu à travailler avec @property (nonatomic, assign). Quelle est la différence quand je ne fournis pas assigner ou conserver (juste rien)? Comment se présentent les accesseurs créés? – Thanks
retenir signifie que lorsque vous définissez la propriété que vous définissez sur l'objet réel (de sorte que votre objet verra les mutations qui se produisent), et bump le nombre de retenue. Copier signifie que vous définissez la propriété sur une copie de l'objet transmis. Affecter signifie que vous effectuez une affectation directe (comme dans la retenue) sans augmenter le retainCount. Puisque les valeurs scalaires n'acceptent pas les messages ou ne participent pas à la conservation/diffusion d'ObjC, ces attributs ne leur sont pas applicables. –
Vous ne savez pas si tout est correct: "Vous utilisez généralement cet attribut pour les types scalaires tels que NSInteger et CGRect ou (dans un environnement compté par référence) pour les objets que vous ne possédez pas, tels que les délégués." – typeoneerror