0

我只是从 Objective-C 开始,我仍然很难做一些非常基本的事情。这就是我想要实现的目标 - 我需要创建一个类来保存我的应用程序的所有静态数据,我猜这些数据可以用许多 NSString ** 数组来表示,例如这个:

NSString *animalNames[NUM_ANIMALS] = {@"fox", @"wolf", @"elephant", @"giraffe"};

我希望能够从我的应用程序的任何位置以静态方式访问这些数组。像这样的东西:

StaticData.animalNames[1]

就@property、@interface、@synthesize 和所有这些东西而言,我将如何做到这一点?

4

1 回答 1

2

我需要创建一个类来保存我的应用程序的所有静态数据

这是您正在谈论的示例。这是一个基本的单例类,其中包含动物的静态数组。

#import <Foundation/Foundation.h>

@interface Foo:NSObject
+ (id)sharedFoo;
- (NSArray *)animals;
@end

@implementation Foo

static NSArray *animals;

+ (void)initialize {
    animals = [NSArray arrayWithObjects:@"fox",@"wolf",@"giraffe",@"liger",nil];
}

+ (id)sharedFoo {
    static dispatch_once_t pred;
    static Foo *cSharedInstance = nil;

    dispatch_once(&pred, ^{ cSharedInstance = [[Foo alloc] init]; });
    return cSharedInstance;
}

- (NSArray *)animals {
    return animals;
}

@end

int main(int argc, char *argv[]) {
    NSLog(@"Animals = %@",[[Foo sharedFoo] animals]);

}

此应用程序将以下内容记录到控制台:

2012-10-08 10:01:46.814 无标题[77085:707] 动物 =(狐狸、狼、长颈鹿、狮虎)

编辑:

如果您喜欢点语法/属性表示法,您可以在类接口中实现以下内容:

@property (readonly) NSArray *animals;  

这会让你写:

[Foo sharedFoo].animals

等等

于 2012-10-08T15:05:09.000 回答