Domanda

È semplice come quello.

Running Lion.

    .
  1. Ho appena aggiornato a xcode 4.4
  2. ha caricato il mio più recente file di progetto Xcode 4.3
  3. ha commentato una linea di codice @synthesize
  4. ed errori abbondano.: (
  5. Compilatore verificato è impostato su 'LLVM 4.0'.

    Allora ho fatto lo stesso test ma ha creato un nuovo progetto all'interno di Xcode 4.4 e voila!Auto @synthesize funziona all'interno di un progetto 4.4.

    Auto @synthesize anche sembra funzionare su nuove proprietà aggiunte al codice.Ma il vecchio esistente genera un errore.

    Qualcun altro ha esperienza questo? Qualsiasi altra cosa che dovrei controllare?

    Voglio davvero che le funzionalità di generazione automatica funzionino.

    Grazie.

È stato utile?

Soluzione

L'errore non è il modo in cui dichiari la proprietà ma nel modo in cui lo usi.

Proprietà sintetizzate automatiche Creare un negozio di supporto con Un sottoscritto leader per impostazione predefinita .

Quindi nel tuo codice quando hai una proprietà dichiarata come:

@property (nonatomic, strong) UILabel *sectorLabel;
.

E tu sei auto-sythesize - qualcosa del genere è generato automaticamente per te dal compilatore:

@synthesize sectorLabel = _sectorLabel;
.

Ora puoi accedervi attraverso la proprietà:

self.sectorLabel;
.

Oppure, è possibile accedere al negozio di supporto direttamente con:

_sectorLabel;
.

Altri suggerimenti

ha risolto!

Quindi questo è quello che ho fatto.

ViewController.h

@interface ViewController : UIViewController
// Public:

@property (nonatomic, strong) UILabel *sectorLabel;

@end
.

ViewController.m

@implementation ViewController

//@synthesize sectorLabel;
.

E poi questo errore è spuntato.

.

ViewController.m: 48: 2: Uso dell'identificatore non dichiarato "Settorelabel";fatto Intendi '_sectorlabel'?

ha risolto il momento in cui ho cambiato il codice in:

self.sectorLabel
.

Xcode 4.3 compilato e ha funzionato bene senza la necessità di avere il "sé".parola chiave.Ma Xcode 4.4 sembra essere stato più rigoroso a riguardo.

Il problema con la risposta accettata è che hai appena cambiato il comportamento del tuo codice aggiungendo l'auto.property.

Accesso all'Ivar rispetto alla proprietà sono due cose diverse.La risposta corretta sarebbe quella di modificare il codice per utilizzare correttamente l'IVAR aggiungendo il sottolineamento.

Questo non riguarda la rigidità relativa a una modifica alla sintetizzazione della proprietà predefinita per XCode.Inoltre, nella maggior parte delle guide di stile leggerai che Apple scoraggia i nomi _ivar, quindi immagino che sia fuori dalla finestra.

Nel mio codice uso solo sé.Quando intendo accedere attraverso la proprietà Getter e Setter.Non cambiare il mio codice esistente per questo comportamento è una perdita di tempo.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top