Objective-C – 定义一个枚举,而不是像ENUMTYPE.ENUMVAL那样的点

前端之家收集整理的这篇文章主要介绍了Objective-C – 定义一个枚举,而不是像ENUMTYPE.ENUMVAL那样的点前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我在 objective-c中读过很多关于枚举类型的东西,我看到有很多方法可以定义它们.但是我没有看到正确的方法(如果有的话)来定义可以使用CARS.ROLLSROYCE调用的枚举,并且不能仅在代码中使用ROLLSROYCE.

所以我可以在CARS枚举中以及BEAUTIFULCARS枚举中定义ROLLSROYCE.

你知道定义这样一个枚举的方法吗?

解决方法

您正尝试在Objective-C中为您的Enums实现名称空间.你要求的是Objective-C中的大量肘部油脂.你可能最好使用C来实现这一点,因为它在任何iOS或 Cocoa应用程序中都很容易和完全支持.您必须将#import C代码文件重命名为.mm文件而不是.m文件,而C编译器可能比Objective-C文件更难.走这条路,你将创建一个像Enums.h这样的头文件.
  1. // Enums.h
  2. namespace CARS
  3. {
  4. enum CARS
  5. {
  6. ROLLSROYCE
  7. };
  8. }
  9. namespace BEAUTIFULCARS
  10. {
  11. enum BEAUTIFULCARS
  12. {
  13. ROLLSROYCE = 45
  14. };
  15. }

在你的.mm源文件

  1. #import "Enums.h"
  2.  
  3. -(void)printEnumvals
  4. {
  5. NSLog(@"CARS %d BEAUTIFULCARS %d",CARS::ROLLSROYCE,BEAUTIFULCARS::ROLLSROYCE);
  6. }

如果你想避免在这个解决方案中使用C,那么就会有更多的肘部油脂,簿记和出错的机会.你需要一个标题和一个源文件.

  1. // CARS.h
  2. @interface BEAUTIFULCARS : NSObject
  3. {
  4. enum
  5. {
  6. BEAUTIFULCARS_ROLLSROYCE = 45
  7. } BEAUTIFULCARS;
  8. }
  9. @end
  10. @interface CARS : NSObject
  11. {
  12. enum
  13. {
  14. CARS_ROLLSROYCE
  15. } CARS;
  16. }
  17. @end
  18.  
  19. // CARS.m
  20. @implementation BEAUTIFULCARS
  21. +(NSInteger)ROLLSROYCE{ return BEAUTIFULCARS_ROLLSROYCE; }
  22. @end
  23. @implementation CARS
  24. +(NSInteger)ROLLSROYCE{ return CARS_ROLLSROYCE; }
  25. @end

您的.m源几乎相同:

  1. #import "CARS.h"
  2.  
  3. -(void)printEnumvals
  4. {
  5. NSLog(@"CARS %d BEAUTIFULCARS %d",CARS.ROLLSROYCE,BEAUTIFULCARS.ROLLSROYCE);
  6. }

Objective-C不像大多数其他OO语言那样管理范围.接口定义接口支持的对象的属性和消息,但不支持公共或私有等保护级别.在@interface中定义枚举时,该枚举最终在全局范围内.

猜你在找的C&C++相关文章