Xcode'da bir sınıfı yeniden adlandırın: Refactor… grileşir (devre dışı). Neden?


112

Neden Refactor ... Xcode'da gri (devre dışı) görünüyor?

Bir sınıfı yeniden adlandırmak istiyorum.

Yanıtlar:


181

Başlık dosyasında sınıfın sembolünü seçin - yani hemen sonraki biti @interface. Daha sonra yeniden düzenleme öğeleri etkinleştirilmelidir.


Sınıfımın başlık dosyasında yalnızca @interface var, @class yok. Ancak @interface'den sonra sembolü seçmek işe yarıyor gibi görünüyor.
Elliot

3
@class ileri beyanlar için ... buysa
Jonathan Sterling

Bu da bir süredir beni rahatsız ediyor. Teşekkürler!
Jonatan Hedborg

Bu bile xcode 4'te yeniden düzenlemeyi etkinleştirmez. Umutsuz oluyorum, neden elma, yeniden düzenleme işlerini geliştirmiyor. Takip edilecek Eclipse var, işler nasıl yapılır!
karim

@karim - Xcode'da hiç çalışmadı, her seferinde işe yarayan geçici çözüm için aşağıdaki cevabıma bakın
Adam

26

Objective-C ++ kullanıyorsanız (yani, Objective-C'yi C ++ koduyla karıştırın), C ++ kodunun yeniden düzenlenmesini desteklemediği için xcode'da yeniden düzenleme devre dışı bırakılır.


Çok üzücü, neredeyse 2 yıl sonra ve yine de Objective-C nesnelerini yeniden düzenlemiyor.
christophercotton

@christophercotton Yaklaşık 8 yıl sonra deneyin ve hala uygulanmıyor.
Alex

7

Refactor, etkilenen dosyalar (büyük olasılıkla içinde sınıfınızın bulunduğu dosya) kaydedilmezse devre dışı bırakılabilir.


1
Arabirim Oluşturucu'da bir xib dosyasını kaydetmek, Xcode'u yeniden başlatmak bile yardımcı olmadığında benim için Yeniden Düzenlemeyi yeniden etkinleştirdi, teşekkürler!
Vincent Gable

1
Bunun için +1. XCode'un bazı köşelerinde hala pürüzlü alanlar var ve bu onlardan biri. Bazen kaydetme yeniden düzenlemeyi etkinleştirmiyorsa, yeniden inşa etme isteği.
memmons

6

Xcode'u 5 yıldır kullanıyorum ve yeniden düzenleme hiçbir zaman düzgün çalışmadı (xcode 4.6'da bile kaynak kodunuzu bozacak büyük hatalar var!).

Çözüm her zaman olmuştur (Apple'ın kodunun başarısız olduğu durumlarda bile% 100 çalışır)

  1. dosyanın tüm kullanımlarını bulmak için shift-command-f kullanın
  2. arama ayarlarında "değiştir" i seçin
  3. "hepsini değiştir"
  4. .h dosyası için aşağıdakileri yapın ve .m DOSYASI İÇİN TEKRARLAYIN (varsa):
    1. orijinal dosyayı sağ tıklayın ve "bulucuda göster" i seçin
    2. dosyayı xcode'dan silin (sorulduğunda "yalnızca referansları sil" seçeneğini seçin)
  5. Finder'da .h'yi (ve varsa .m'yi) yeniden adlandırın
  6. Xcode'da "Ürün -> (Alt tuşunu basılı tutun) -> Derleme Klasörünü Temizle" yi seçin
  7. xcode'dan çıkın (genellikle bunu yapmamakla kurtulabilirsiniz - ancak NOT: Xcode'da bunu yapmazsanız kendi kendine çöktüğü başka BÜYÜK hatalar vardır)
  8. xcode'u yeniden aç
  9. .h ve .m'yi Xcode'a geri sürükleyip bırakın
  10. birkaç saniye bekleyin (Xcode'un temel yöntemlerinden bazıları eşzamansızdır - projenizi bozmasına izin verir)
  11. son olarak, hiçbir şey yapmıyor gibi göründüğünde (ve sabit diskiniz artık ses çıkarmadığında): yeniden oluşturmak için cmd-b

Bu yöntemle% 100 başarı oranına sahibim. En son xcode'da Apple'ın "Refactor -> Rename" ile yeniden düzenlemeyi denedim ve başarısız oldu - yine!

(bu sefer Apple'ın yanlış metni yerleştirdiği hata mesajlarından biri olan "Dili belirlenemiyor" hatasıyla birlikte)


Evet, bunu yakın zamanda denedim (Mayıs 2014) ve Xcode resmi "refactor" menüsü seçeneği hala bozuk, yine de kaynak kodunuzu bozuyor . Apple çalışanlarının bundan rahatsız olmamasına şaşırdım.
Adam

3

Finder'da projeme gidiyorum, sonra bilgi alarak dosya adını değiştiriyorum .

Daha sonra xcode -> Project Navigator'da dosyaları siliyorum .

Sonunda, sınıfa sağ tıklıyorum ve Dosyaları şuraya ekle ... ve bu dosyaları tekrar ekliyorum.

Benim için çalıştı.


2

Benim için açtığım Xcode projesi eksik olan bir Base SDK'ya başvurduğu için Refactor'ın devre dışı bırakıldığını fark ettim. Proje Ayarlarını Düzenle ve Oluştur sekmesinde Temel SDK'yı sahip olduğunuza ayarlayın (benim için bu iOS 4.2 olduğu gibi). Bu benim için Refactor'u etkinleştirdi.


1

Ayrıca, sınıfın dosya adını xcode dışında veya ctrl tuşuna basarak dosya adına tıklayıp yeniden adlandırarak yeniden adlandırmış olabilirsiniz. xcode, dosya adı sınıf adıyla eşleşmezse yeniden düzenlemeyi reddeder.


1

Sınıfınızın başlık dosyasına gidin ve buna benzer görünen satırı bulun:

@interface YourClassName

Sınıf sembolüne sağ tıklayın (örneğin, SınıfAdı) ve Yeniden Düzenleme -> Yeniden Adlandır ... seçeneğini seçebilmelisiniz.

Bunu yeni denedim ve Xcode 5'te çalışıyor.


0

Bu sorunu da yaşadım. Eksik SDK'ları bulmaya, dosyaları kaydetmeye ve yukarıda belirtildiği gibi Objective-C ++ kodunu aradım ve makinemi düzeltmek için gereken tek şey XCode'u yeniden başlatmaktı.

Hâlâ biraz hatalı görünüyor.

BTW, bu XCode 4.0.1 içindi


-1

Yeniden düzenleme çalışmaları Önce proje gezgininde dosya adını değiştirirseniz.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.