2013-05-20 24 views
5

Diğer SDK'ları entegre eden bir iOS SDK geliştiriyorum (örneğin, Facebook SDK 3.5). Çarpışmaları önlemek ve müşterilerimin de bu SDK'ları içe aktarmasına izin vermek için, kodumdaki tüm sınıfları/enumları yeniden adlandırmak istiyorum (örneğin, FBSession'ı RDFBSession olarak yeniden adlandırın, vb.).iOS SDK'ları: Çok sayıda sınıfın yeniden adlandırılması

Sınıflara ve Xcode'un yeniden adlandır özelliğini kullanmak yerine bunu yapmak için kolay bir yol var mı?

+0

Xcode, daha kolay hale getirecek bir Refactor işlevine sahiptir. – trojanfoe

+0

@trojanfoe Bunun farkındayım, şey, yeniden adlandırılacak birçok sınıf ve başka semboller var. Hala uzun bir acı verici süreç olurdu. –

+2

Başlamak için daha iyi ol, yoksa asla bitiremezsin. Kaynak kodu, tek tıkla çözümün istediğini yapmak için var olabileceği kadar karmaşıktır. Temelde kendin yapmak zorundasın. – trojanfoe

cevap

3

Xcode ayrıca metinsel Arama ve Değiştirme özelliği sunar. Bu bireysel refaktörlerden daha hızlı olacak, ancak sonuçta daha az otomatik. Projeyi önce ilgili bağımlılıkları/kaynakları (mümkünse) en aza indirerek, daha hızlı geri adım atmayı adım adım yapabilirsiniz. Ancak, bir kitaplıktaki bildirimleri yeniden adlandırmak, ilişkili ikili öğesinin sembol isimlerini değiştirmeyecektir. Bir ikili ile dağıtılırsa, yeniden adlandırma yalnızca bağlayıcı hataları veya (bazı durumlarda) çalışma zamanı hatalarıyla sonuçlanır.

Müşterilerinizin de kullanabileceği bir üçüncü taraf kitaplığı kullanmanız gerektiğinde en iyi fikir, basitçe onları bilgilendirmek ve kütüphaneyi kendi uygulamasıyla ilişkilendirmek zorundadırlar, daha sonra mevcut sürüm desteklerini sürümlerini yayımlamaları gerekir. Bazı kütüphanelerle çok ileri gitmeleri durumunda ekstra test yaptıklarını biliyorlar.

+0

Son paragrafta açıklanan yönteme gitmeye karar verdim. Bu konuya en temiz yaklaşım gibi görünüyor. Teşekkürler! –

+0

@RanDahan Hoş Geldiniz :) – justin

-1

Sınıflarınızı yeniden adlandırmaktan daha iyi bir yaklaşım, Facebook'un açık kaynak kodunu indirmek, sınıfları yeniden adlandırmak ve yeniden adlandırılmış bir başlık dosyasıyla yeni bir statik kitaplık oluşturmak olacaktır. Ardından, hiçbir çarpışma olmadığından ve kendiniz adlandırdığınız sembolleri kullandığınızdan emin olabilirsiniz.

Yine de sizi uyarmalıyım - bunun gibi çalışmak, SDK'yı bu özel sorunla nasıl baş edeceğinize bakmaksızın bir kabus güncellemesi yapabilir.

tops -verbose replace "FBSession" with "RDFBSession" Sources/*.[hm] 

Eğer varsa:

+1

Gelecekte FB SDK'yı güncellemek zorunda kalabileceği için bu kötü bir fikir. Eğer öyleyse, tekrar FB'den herşeyi isimlendirme çalışmasından geçmek zorunda kalacaktı. Sınıflarını yeniden adlandırmanın sıkı çalışmasından daha iyi. Bazen en iyi yaklaşım kolay değildir. – stevekohls

+0

Sınıflarını yerel olarak yeniden adlandırırsa, yine de her FB SDK güncellemesi için her şeyi tekrar yapmanız gerekir. – Stavash

3

Elma (C fonksiyonları, Objective-C yöntemleri, sınıflar ve diğer belirteçleri yeniden adlandırma) betik büyük ölçekli kod üstlenmeden için tasarlanmıştır tops(1) adlı bir komut satırı aracı sağlayabilir bir çok değiştirge, replace... komutlarının tümünü -scriptfile seçeneğiyle ilettiğiniz bir dosyaya koyabilirsiniz. man page, daha karmaşık komutlar/seçenekler (ve örnekler) hakkında daha fazla bilgiye sahiptir.

İlgili konular