Question

C'est aussi simple que cela.

LION en cours d'exécution.

  1. Je viens de passer à Xcode 4.4
  2. Chargé mon dernier fichier Xcode 4.3 le plus récent
  3. a commenté une ligne de code @Synthesize
  4. et erreurs abondent.: (
  5. Compiler vérifié est défini sur 'LLVM 4.0'.

    Puis j'ai fait le même test mais j'ai créé un nouveau projet dans Xcode 4.4, et Voila!Auto @synthesize fonctionne dans un projet 4.4.

    Auto @synthesize aussi semble fonctionner sur Nouveaux les propriétés ajoutées au code.Mais l'ancien existant génère une erreur.

    Quelqu'un d'autre l'expérience? Toute autre chose que je devrais vérifier?

    Je veux vraiment que les fonctionnalités de génération automatique fonctionnent.

    merci.

Était-ce utile?

La solution

L'erreur n'est pas la façon dont vous déclarez la propriété, mais de la manière dont vous l'utilisez.

Propriétés synthétisées automatiques Créez un magasin de support avec un soulignement de premier plan par défaut .

Donc, dans votre code lorsque vous avez une propriété déclarée:

@property (nonatomic, strong) UILabel *sectorLabel;

Et vous êtes auto-sohèse - quelque chose comme celui-ci est généré automatiquement pour vous par le compilateur:

@synthesize sectorLabel = _sectorLabel;

Vous pouvez maintenant y accéder via la propriété:

self.sectorLabel;

ou, vous pouvez accéder au magasin de support directement avec:

_sectorLabel;

Autres conseils

résolu!

C'est ce que j'ai fait.

ViewController.h

@interface ViewController : UIViewController
// Public:

@property (nonatomic, strong) UILabel *sectorLabel;

@end

ViewController.m

@implementation ViewController

//@synthesize sectorLabel;

Et puis cette erreur est apparue.

ViewController.m: 48: 2: Utilisation d'un identifiant non déclaré 'SecteurLabel';a fait Vous voulez dire '_sectorlabel'?

Il a résolu le moment où j'ai changé le code à:

self.sectorLabel

xcode 4.3 compilé et a fonctionné bien sans la nécessité d'avoir le "soi".mot-clé.Mais Xcode 4.4 semble avoir eu plus strict à ce sujet.

Le problème avec la réponse acceptée est que vous venez de modifier le comportement de votre code en ajoutant le Self.Property.

Accéder à la ivar par rapport à la propriété est deux choses différentes.La réponse correcte serait de modifier le code pour utiliser correctement l'ivar en ajoutant le soulignement.

Il ne s'agit pas de la stricté, c'est à propos d'une modification de la synthétisation des propriétés par défaut pour Xcode.En outre, dans la plupart des guides de style, vous lirez que Apple décourage les noms _ivar, donc je suppose que c'est sur la fenêtre.

Dans mon code, j'utilise seulement soi-même.Lorsque j'ai l'intention d'accéder à travers la propriété Getter et Setter.Ne pas changer mon code existant pour ce comportement sa perte de temps.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top