Sì, refactoring è male rotto in Xcode 7.
ho trovato problemi simili quando si cerca di rinominare proprietà, metodi e classi. Ieri ho scaricato 7.1.1 con la speranza che potrebbero esserci dei miglioramenti ma nessuno finora.
ho fatto dei test in un campione unico progetto vista in Objective-C su Xcode 7.1.1 e trovato il seguente:
- Se si tenta di rinominare una proprietà che ha IBOutlet parola chiave, fallirà;
- Se si tenta di rinominare un'altra proprietà che non è IBOutlet, ma al di sopra della sua dichiarazione si ha una proprietà che è IBOutlet, la rinomina avrà esito negativo;
- Se si tenta di rinominare un metodo dichiarato sotto la proprietà IBOutlet e di fare clic con il pulsante destro del mouse sul metodo nel file .h, la rinomina avrà esito negativo;
- Se si tenta di rinominare una classe che #importa una classe che ha alcune dichiarazioni IBOutlet nel file di intestazione, la rinomina avrà esito negativo (evidenziato poiché questo è il caso, la domanda originale riguarda).
Per fortuna ho trovato anche alcune soluzioni:
- Se si sposta la dichiarazione della vostra proprietà sopra dichiarazioni IBOutlet, rinominare avrà successo;
- Se è necessario rinominare IBOutlet, è possibile spostarlo sopra tutti gli altri IBOutlet e rimuovere la parola chiave IBOutlet prima di rinominarlo. La rinomina avrà successo (e lo cambierà anche in Storyboard), quindi potrai aggiungere la parola chiave IBOutlet;
- Se si sposta la dichiarazione del metodo sopra qualsiasi proprietà IBOutlet, la rinomina avrà esito positivo dal file .h, ma in alternativa sembra funzionare anche se si tenta di rinominarlo durante la selezione in un file .m (quest'ultimo caso funziona anche se metodo è dichiarato nel file .h sotto le proprietà di IBoutlet);
- Quando si rinomina la classe che importa un'altra classe con IBOutlet, è possibile effettuare le seguenti operazioni: spostare gli IBOutlet dell'altra classe dal file .h al file .m. Quindi rinominare le opere. In alternativa, rimuovere tutte le parole chiave IBOutlet prima di ridenominarle, quindi aggiungerle di nuovo dopo.
Nota: Quando dico che rinomina riesce, voglio dire - esso non indicherò "la selezione non è un tipo che può essere rinominato".Tuttavia continua a non funzionare regolarmente la maggior parte del tempo:
- Non mostra le modifiche da apportare nei file, come era solito fare;
- Si può lamentare del fatto che i file siano stati modificati da un'altra applicazione mentre Xcode ha modifiche non salvate. Come ho scoperto, di solito devi scegliere "Mantieni la versione Xcode";
- Potrebbe non riuscire a rinominare la proprietà in tutti i file in cui è stata utilizzata. Questo è il più importante, che in alcuni casi rende inutili tutti i workaround. In particolare l'ho visto quando si rinomina le proprietà di IBOutlet con il metodo che ho descritto sopra.
Speranza che aiuta :)
fonte
2015-11-12 12:32:12
Hai provato Modifica -> Refactoring> Rinomina? – Abhinav
Solo provato, stesso risultato. – Stunner
Mi chiedo perché l'interfaccia non sia '@interface ViewController: UIViewController' o' @interface ViewController() '? – WangYudong