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