iOS中的公共静态变量
Posted
技术标签:
【中文标题】iOS中的公共静态变量【英文标题】:Public static variable in iOS 【发布时间】:2015-03-19 20:12:08 【问题描述】:public class CommandType
public static final int DELETE = -1;
//Class B - Access from class B here
CommandType.DELETE
如果我正在使用
//ClassA.h
extern int const kMyConstant;
//ClassA.m
int const kMyConstant = @"my constant";
switch (messagetype)
case kMyConstant: //Can't set const value here
我需要将其转换为objectiveC。有可能吗?
【问题讨论】:
之前有人问过这个问题:***.com/questions/6188672/…, ***.com/questions/554256/integer-constants, ... 在 switch 语句中你不能使用 NSString。在 switch 中你应该使用 int 或 char。为此,您可以使用 ENUM 哦,我讨厌没有 cmets 的投票! :(如果你这么聪明,为什么不回答这个问题??- @SampathKumar ??我回答你的问题... 【参考方案1】:如果您想在课堂上使用它,请在您的 .m 文件中试试这个。
#import "yourimport";
static const NSInteger DELETE = -1;
@implementation YourClass
如果您希望它是全局变量,您应该在.h 文件中执行此操作
extern NSInteger *const DELETE;
为了做到这一点
//ClassA.h
extern int const kMyConstant;
//ClassA.m
int const kMyConstant = @"my constant";
switch (messagetype)
case kMyConstant: //Can't set const value here
您应该在 .h 中创建 ENUM:
#import <AVFoundation/AVFoundation.h>
typedef NS_ENUM(NSInteger, YourType)
YourTypeConstant1 = 0,
YourTypeConstant2,
;
@interface YourViewController : ViewController
然后:
NSNumber *number = @(YourTypeConstant1);
switch (number)
case YourTypeConstant1:
//your code
break;
case YourTypeConstant1:
//your code
break;
default:
//your default code
break;
【讨论】:
如果在.h文件中标记为extern
,则必须在.m文件中删除static
,否则无法编译。【参考方案2】:
处理整数常量的最佳方法是在 .h 文件中声明它:
static const NSInteger DELETE = -1;
然后导入 .h 文件的每个文件(在您的情况下,例如 B 类)都将能够访问常量,例如:
NSInteger test = DELETE;
这是最接近 Java 代码的地方...
【讨论】:
以上是关于iOS中的公共静态变量的主要内容,如果未能解决你的问题,请参考以下文章