在Constants文件中静态声明数组

时间:2014-01-24 03:29:23

标签: objective-c static constants

我在Constants.m文件中声明了许多静态数组,例如我的tableView的numberOfRowsInSection计数:

+ (NSArray *)configSectionCount
{
    static NSArray *_configSectionCount = nil;
    @synchronized(_configSectionCount) {
        if(_configSectionCount == nil) {
            _configSectionCount = [NSArray arrayWithObjects:[NSNumber numberWithInt:2], [NSNumber numberWithInt:2], [NSNumber numberWithInt:4], [NSNumber numberWithInt:3], [NSNumber numberWithInt:0], nil];
        }
        return _configSectionCount;
    }
}

这是最好的方法,是否有必要将它们全部声明为这样?

1 个答案:

答案 0 :(得分:2)

我的工作是:

// main.m
#import <UIKit/UIKit.h>
#import "AppDelegate.h"
#import "Constants.h"
int main(int argc, char * argv[])
{
    @autoreleasepool {
        [Constants class];
        return UIApplicationMain(argc, argv, nil, 
                   NSStringFromClass([AppDelegate class]));
    }
}

// Constants.h
extern NSArray* configSectionCount;
#import <Foundation/Foundation.h>
@interface Constants : NSObject
@end

// Constants.m
#import "Constants.h"
@implementation Constants
NSArray* configSectionCount;
+(void)initialize {
    configSectionCount = @[@2, @2, @4, @3, @0];
}
@end

现在,导入 Constants.h 的任何 .m 文件都可以访问configSectionCount。为了使这更容易,我的 .pch 文件包含:

// the .pch file
#import "Constants.h"

完成。现在configSectionCount绝对是全球性的。 (你真的应该给这些全局变量一个特殊格式的名称,比如gCONFIG_SECTION_COUNT。否则你不会明白明天的来源。)