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中的公共静态变量的主要内容,如果未能解决你的问题,请参考以下文章

C# Windows 窗体应用程序中的全局变量方法? (是公共静态类 GlobalData 最好的)

公共静态变量和私有静态变量之间的区别

为啥 C# 公共静态变量不需要实例化?

公共静态变量和Android活动生命周期管理

Objective-C 静态、外部、公共变量

.NET 公共静态变量的“寿命”?