2012-05-03 22 views
5

benim objektif-C sınıfınınKelimenin bir kısmını önişlemciyle değiştirmenin herhangi bir yolu var mı?

@interface PREFIX_MyClass { 
... 
@end 

böyle bir şey var ve ben dönüştürmek için önişlemci kullanmak istiyorum:

@interface AwesomeMyClass { 
... 
@end 

yüzden bir şey

#define PREFIX_ Awesome 

gibi

çalışmıyor, çünkü bu kelimenin bir parçası. Başka bir yol var mı? Ben böyle bir şey kullanabilirsiniz biliyorum:

#define PrefixClass(NAME) Awesome##NAME 

@interface PrefixClass(MyClass) 

ama kod tam ve referans (yani: Bu durumda Xcode) dev araçları aşağıdaki kırar çünkü bu sevmiyorum

+2

Sadece meraklı, bu bir isim-alanı hack mi? Yapmaya çalıştığın şeyin nedenini anlamaya çalışıyorum ve bunu göremiyorum. – dasblinkenlight

+0

@dashblinkenlight evet, bu otomatik bir ad boşluğu. – pho0

+0

Eminim ki bunu yapan bir açık kaynak projesi gördüm, ama hayatımın bir daha onu bulamaması için yapamam. – malhal

cevap

2

Bu değil Çok zarif, ama sadece bir parça yerine tüm sınıf adını değiştirmek için önişlemci kullanabilirsiniz.

#define PREFIX_MyClass AwesomeMyClass 
@interface PREFIX_MyClass 

Tabi ki, bu önekini birden çok kez kullanırsanız ve değiştirirseniz, bu bir sorun haline gelir. Bunu, öneki eklemek için başka bir makroyu arayarak başka bir makroyu kullanarak da kullanabilirsiniz, böylece yalnızca bir makro gerçek öneki içerir.

#define ADD_PREFIX(name) Awesome##name 
#define PREFIX_MyClass ADD_PREFIX(MyClass) 
@interface PREFIX_MyClass 

Bu hala önüne istediğiniz her şey için bir makro gerektirir, ancak kod tamamlama PREFIX_MyClass adını tanıyacaktır.

+0

Evet, aslında bunu şimdi yapıyorum. Her sınıf için yeni bir tanım gerektirmeyen bir şey elde etmeyi umuyordum. – pho0

+0

@ pho0 Sonra sadece tüm sınıfları makro aracılığıyla yazınız: '@interface ADD_PREFIX (MyClass)' –

+0

@ 0x69, sorun aşağıdaki referansı kaybeder ve tam destek kodları. Çok fazla soruyorum;) – pho0

0

Bu tam olarak sizin için sorduğunuz şey değil, ancak hedefinize ulaşmak için başka bir yol olabilir. Xcode, projeniz için bir sınıf öneki tanımlamanıza olanak tanır. dosya gezgini Projenizi seçin ve dosya denetçisi (sağ kenar çubuğunun ilk "sekmesi") içinde bu olacaktır:

enter image description here

olacaksın "Sınıf önek" alanına koymak ne olursa olsun metin Bu projede oluşturduğunuz tüm sınıfların adlarına hazırlandı.

+0

Jacques, evet, bunu düşündük, ancak önişlemciler için gerekli düzenlemeleri düzenleyerek değiştirilebilir öneklere ihtiyacımız var. – pho0

İlgili konular