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这样的头文件.
//  Enums.h
namespace CARS
{
    enum CARS
    {
        ROLLSROYCE
    };
}
namespace BEAUTIFULCARS
{
    enum BEAUTIFULCARS
    {   
        ROLLSROYCE = 45
    };
}

在你的.mm源文件

#import "Enums.h"

-(void)printEnumvals
{
    NSLog(@"CARS %d BEAUTIFULCARS %d",CARS::ROLLSROYCE,BEAUTIFULCARS::ROLLSROYCE);
}

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

// 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

您的.m源几乎相同:

#import "CARS.h"

-(void)printEnumvals
{
    NSLog(@"CARS %d BEAUTIFULCARS %d",CARS.ROLLSROYCE,BEAUTIFULCARS.ROLLSROYCE);
}

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

相关文章

本程序的编译和运行环境如下(如果有运行方面的问题欢迎在评...
水了一学期的院选修,万万没想到期末考试还有比较硬核的编程...
补充一下,先前文章末尾给出的下载链接的完整代码含有部分C&...
思路如标题所说采用模N取余法,难点是这个除法过程如何实现。...
本篇博客有更新!!!更新后效果图如下: 文章末尾的完整代码...
刚开始学习模块化程序设计时,估计大家都被形参和实参搞迷糊...