2

我在数据库中有一些数据,我想将其作为NSArray自定义对象进行检索,并且我希望它NSArray是静态的,因为我需要从一个其方法都是类方法并且我不实例化的类中引用它。我需要首先检查这是否NSArray已经包含对象,如果没有,则从数据库中获取数据并创建它。然后,我需要能够NSArray从视图控制器中获取它,例如NSArray *listOfItems = [MyClass getStaticArray],但我不知道如何处理它。

与此相关的另一个问题:它对内存管理有什么影响NSArray

谢谢!

4

2 回答 2

1

根据您所描述的,在您的情况下,最好的解决方案是使用Singleton Pattern。确保你理解它。这是关于 iOS 上 Singleton的 StackOverflow 问题。

于 2013-08-01T14:29:02.350 回答
1

只需使用单例。

创建类StaticArrayClass : NSArray

然后在 .m 文件中:

+(id)sharedInstance {
    static dispatch_once_t pred;
    static StaticArrayClass *sharedInstance = nil;
    dispatch_once(&pred, ^{
        sharedInstance = [[StaticArrayClass alloc] initWithArray:@[@1,@2.....]];
    });
    return sharedInstance;
}

- (void)dealloc {
    abort();
}

在 .h 文件中:

@interface StaticArrayClass : NSArray

+(id)sharedInstance;

就是这样。

你可以这样称呼它:

NSArray *listOfItems = [StaticArrayClass sharedInstance]

在您的应用程序中的任何位置。如果您不知道单例设计模式,请访问@Bruno Koga 答案中的链接。

于 2013-08-01T14:32:23.853 回答