如何声明常量

Rog*_*are 7 if-statement objective-c

我正在稳定地掌握Objective-C,但我仍然是一个初学者并且有一个初学者级别的问题,希望有人能够阐明:

如果我有一个非常简单的项目,并希望设置一个我将在整个过程中使用的常量,比如一个NSDictionary,其中键是月份名称,值是该月份的天数 - 这是如何完成的?(即,什么命令形式和放在哪里?)

注意: 如果使用内置函数已经可以使用这个例子,也许我们可以假装它不是出于这个问题的目的;)

das*_*ght 19

答案取决于常数的类型.如果您只需要a int或a double,则可以使用预处理器和#define CONST 123语法.但是,对于Objective C类,您需要做更多的工作.

具体来说,您需要隐藏类方法或独立函数后面的常量.您还需要在头文件中添加该方法或函数的原型,提供一个函数范围的静态变量来存储常量,并添加代码来初始化它.

这是一个使用简单的例子NSDictionary:

标题:MyConstants.h

@interface MyConstants
+(NSDictionary*)getConstDictionary;
@end
Run Code Online (Sandbox Code Playgroud)

实施:MyConstants.m

+(NSDictionary*)getConstDictionary {
    static NSDictionary *inst = nil;
    static dispatch_once_t onceToken;
    dispatch_once(&onceToken, ^{
        inst = @{
            @"key1": @"value1",
            @"key2": @"value2",
            @"key3": @"value3"
        };
    });
    return inst;
}
Run Code Online (Sandbox Code Playgroud)

用法:

NSString *val = [[MyConstants getConstDictionary] objectForKey:@"key2"];
Run Code Online (Sandbox Code Playgroud)