2014-09-19 24 views
5

Il mio lavoro applicazione perfettamente bene fino a quando ho scaricato nuovo Xcode, ora si è fermato per errore "SIGABRT segnale" e punto di partenza per questo:Cant app lancio con nuovo Xcode 6

[PlaceHolder setDescription:]: unrecognized selector sent to instance 0x79838900 
    Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[PlaceHolder setDescription:]: unrecognized selector sent to instance 0x79838900' 

lo so, che l'informazione non può essere abbastanza per capire cosa sta succedendo, ma non ho idea di dove iniziare la ricerca. Se ci sono stati errori con i metodi setter, perché la mia app funziona prima? Ci sono nuove modifiche che impediscono l'avvio dell'app?

PlaceHolder è un oggetto che contiene proprietà (come collegamenti immagine, testo ecc.). Inoltre, c'è un nuovo avviso "giallo" - Auto property synthesis will not synthesize property 'description' because it is 'read-write' but it will be synthesized 'read-only' via another property

+1

pulire la cartella dati privata della tua app -> Organizzatore -> Progetti -> La tua app. –

+1

'description' è il campo della tua classe personalizzata? Se puoi rinominarlo, fallo, la descrizione sembra essere usata da qualche parte in os come una parola chiave. –

risposta

10

Sembra che sia stata definita una proprietà description. Purtroppo lo NSObject ha già un metodo description. Poiché probabilmente non stai tentando deliberatamente di sovrascrivere questo metodo nella sottoclasse, questa operazione probabilmente non è sicura. Sembra che sotto iOS 7 SDK e Xcode 5 la tua proprietà abbia sostituito il metodo su NSObject. In iOS 8 SDK e Xcode 6 questo non è il caso (probabilmente a causa di cambiamenti nel modo in cui è definito il metodo) in modo da ottenere un comportamento diverso.

Si consiglia di rinominare questa proprietà per evitare tali conflitti. description è uno strumento di debug utile e uno potrebbe non volere rinunciare a questa classe accidentalmente.

+0

Sembra che 'description' sia diventato una proprietà in iOS 8: http://www.redwindsoftware.com/blog/post/2014/08/20/NSObject-has-some-new-properties-in-iOS-8. aspx – Jonah

+0

Grazie per il chiarimento Jonah! –

8

grazie mille per l'aiuto.

Descrizione è una proprietà di classe di PlaceHolder:

@property (nonatomic, retain) NSString *description; 

problema è stato risolto semplicemente mettendo @synthesize description; nell'attuazione (.m) file di classe segnaposto. Per qualche ragione, il nuovo Xcode lo sintetizza tramite la proprietà "read only" e ciò causa un errore SIGBART, perché l'app ha provato a scrivere su questa proprietà (che era in sola lettura per qualche motivo).

Spero che l'informazione possa essere utile a qualcuno che ha problemi simili.

+1

Stavo utilizzando una proprietà denominata "nome" e stavo avendo lo stesso problema. In questa causa sto specificatamente utilizzando la mia funzionalità personalizzata di questa variabile (piuttosto che la descrizione di override), quindi questa risposta ha risolto il mio problema. – ColdLogic

+0

felice di potervi aiutare ColdLogic –

+0

Ma quanto è sicuro? Ci troveremmo mai in problemi per fare questo? – raulriera