我知道将这个词放在extern
头文件中的变量声明之前声明了全局静态变量的存在而不初始化它。我也明白,如果我导入包含extern
变量的文件,我可以在没有类/文件名的情况下引用它们。但是在哪里定义它们和它们的价值呢?
我想做的是创建一个带有全局常量的常量类,我想在整个 iOS 应用程序的代码中使用它。
是否将它们放在这样的界面中?
例子.h
#import <Foundation/Foundation.h>
@interface Constraints : NSObject
{
extern NSString * const PREFS_NAME;
}
还是像这样放在界面之外
例子.h
#import <Foundation/Foundation.h>
extern NSString * const PREFS_NAME;
@interface Constraints : NSObject
{
}
然后在实现 .m 文件中如何初始化外部值?
在这样的实施区域内?
例子.m
#import "Constraints.h"
@implementation Constraints
/**PRefecences name for the application**/
const NSString * PREFS_NAME = @"MyApp_Prefs";
@end
或者像这样在实现区域之外初始化它们:
例子.m
#import "Constraints.h"
/**PRefecences name for the application**/
const NSString * PREFS_NAME = @"MyApp_Prefs";
@implementation Constraints
@end
还是我在构造函数中为它们提供初始值?或一些任意的静态样式方法,+
前面有,即+(void) setAppConstraints
;
我尝试了几种组合,但总是遇到错误,例如“使用不同类型重新定义'xVariable'”。或者关于“外部没有初始化接口”的东西(或者类似的东西,我忘记了)。所以我想知道如何正确地声明和初始化它们以形成与public static final
Java 中的变量相同的角色。
还有什么是extern
命令的限制?我知道我可以extern
使用NSInteger
or NSString
,但那又如何NSArray
呢?
extern
我问这个问题是因为关于在 Objective-C中使用的信息似乎有很多误导性或不完整的信息。许多答案似乎是推测性的。我希望这个问题不仅对我来说是一个很好的资源,而且可以限制关于extern
.