如何在Objective C中为变量创建单个赋值变量

时间:2014-02-19 12:08:55

标签: ios objective-c variables

我在iOS项目中使用全局字符串变量(在main中声明它并在不同的类中重用它),并且我想确保一旦为其赋值,就永远不会重新分配它。怎么做?

5 个答案:

答案 0 :(得分:1)

您可以使用GCD:

static float value = 0.f;

+ (void)setValue:(float)_value
{
    static dispatch_once_t onceToken;
    dispatch_once(&onceToken, ^{
        value = _value;
    });
}

这样,任务就可以完成一次。

答案 1 :(得分:1)

.m中无法执行此操作。因为应用程序以main.m开头,所以找不到抽象的main.h。

可以通过以下步骤完成。

1)在CommonConstant.h中定义全局静态属性

static NSString *common;

2)将YourApp-prefix.pch文件中的此文件导入全局可见。

#import "CommonConstant.h"

3)然后在你的不同类中分配GCD概念,这将指向首先分配甚至发生更多的任务。

static dispatch_once_t onceToken;
dispatch_once(&onceToken, ^{
    // Do the variable assignment here
});

答案 2 :(得分:1)

让它保持不变

const int no = 10;

或者您也可以将其设为宏

#define myConstant 1

并在其他类中访问它,只需导入您定义此宏的类。

答案 3 :(得分:1)

如果您想在不同的课程中重复使用,可以使用

#define myConstVariable 10

在预编译的头文件(.pch)中。预编译的头文件(.pch)已编译并自动包含在您的所有头文件(.h)中,因此将在整个项目中全局显示。

答案 4 :(得分:1)

创建一个新的NSObject子类并将其命名为Constants

Constants.h:

#import <Foundation/Foundation.h>

@interface Constants : NSObject

extern NSString * const MyStringConstant;

@end

Constants.m:

#import "Constants.h"

@implementation Constants

NSString * const MyStringConstant = @"ValueOfMyStringConstant";

@end

要从每个课程中获取它,您可以将其导入pch文件,如下所示

#ifdef __OBJC__
    #import <UIKit/UIKit.h>
    #import <Foundation/Foundation.h>
    #import "Constants.h"
#endif