Nesneleriniz için Object-C'deki ad alanlarını kullanmaya çalışıyorsunuz. İstediğin şey, Objective-C'de bir sürü dirsek yağıdır. Bunun için C++ kullanarak muhtemelen en iyi durumdasınız, çünkü herhangi bir iOS veya Kakao uygulamasında tam olarak desteklenen kolay ve afaik. #import
C++ kodunuzu .m
dosyaları yerine .mm
dosyalarına yeniden adlandırmanız ve C++ derleyicisinin Objective-C one'dan daha zor olabilir. Bu rotaya gitmek, Enums.h
gibi bir başlık dosyası oluşturacaksınız.
// Enums.h
namespace CARS
{
enum CARS
{
ROLLSROYCE
};
}
namespace BEAUTIFULCARS
{
enum BEAUTIFULCARS
{
ROLLSROYCE = 45
};
}
Ve bu çözüm için C++ kullanarak kaçınmak istiyorsanız sizin .mm
sourcefile
#import "Enums.h"
-(void)printEnumvals
{
NSLog(@"CARS %d BEAUTIFULCARS %d",
CARS::ROLLSROYCE,
BEAUTIFULCARS::ROLLSROYCE);
}
yılında
, hata için çok daha fazla el emeği, defter tutma ve fırsat var. Bunun için bir başlık ve bir kaynak dosyaya ihtiyacınız olacak.
// CARS.h
@interface BEAUTIFULCARS : NSObject
{
enum
{
BEAUTIFULCARS_ROLLSROYCE = 45
} BEAUTIFULCARS;
}
@end
@interface CARS : NSObject
{
enum
{
CARS_ROLLSROYCE
} CARS;
}
@end
// CARS.m
@implementation BEAUTIFULCARS
+(NSInteger)ROLLSROYCE{ return BEAUTIFULCARS_ROLLSROYCE; }
@end
@implementation CARS
+(NSInteger)ROLLSROYCE{ return CARS_ROLLSROYCE; }
@end
Sizin .m
kaynak hemen hemen aynıdır:
#import "CARS.h"
-(void)printEnumvals
{
NSLog(@"CARS %d BEAUTIFULCARS %d",
CARS.ROLLSROYCE,
BEAUTIFULCARS.ROLLSROYCE);
}
Objective-C diğer birçok OO dilleri yapmak aynı şekilde yönetmesine etmez. Arabirimler, arabirimin desteklediği bir nesnenin özelliklerini ve mesajlarını tanımlar, ancak kamu ya da özel gibi koruma seviyelerini desteklemez. Bir enum bir
@interface
'da tanımladığınızda, bu enum genel kapsamda biter. Benim durumumda için
@Thomson Comer: bu ad TEST { \t enum TESTİ { \t \t ABC \t \t ///// çalışmaz DEF \t}; } – Oliver
@Thomson Comer: Derleyici, "TEST" – Oliver
@Oliver'den önce "beklenen" = "". "Etc ... 'asm' veya '_attribute_' yazıyor. Bu ad alanı kodunu içeren kaynak dosyayı yeniden adlandırmayı unuttun '.mm' dosyasına .Ad alanları, her zaman ".m" ile eklenmiş Objective-C'de desteklenmez. Bir ad alanı kullandığınızda, C++ kodu olarak ele almanız gerekir, bu da kaynak dosyanın son haline getirilmesini gerektirir. .mm'. –