微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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中定义枚举时,该枚举最终在全局范围内.

原文地址:https://www.jb51.cc/c/117985.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐