单例数组目标c的实例

时间:2013-04-24 00:02:09

标签: objective-c nsmutablearray singleton

我用这样的单例方法实现了一个数组:

·H

#import <UIKit/UIKit.h>

@interface globaltextarray : NSObject 
+(NSMutableArray*)Text;

@end

的.m

#import "globaltextarray.h"

@implementation globaltextarray

+(NSMutableArray*)Text {
    static NSMutableArray *statArray;
    static dispatch_once_t onceToken;
    dispatch_once(&onceToken, ^{
        statArray = [NSMutableArray array];
    });
    return statArray;
}
@end

我以其中一种形式使用它并且完美地运作。我想要实现的目标如下。

在我使用这个globalarray的形式,当我点击一个按钮时,一个新的表单打开与之前已经打开的表格相同但内部的数据不同然后在刚刚打开的第二个表单上点击一个按钮同样的故事还在继续。所以我的问题是:有没有办法使用这个和唯一的globaltextarray对象创建多个单例数组,该对象应该保存不同的数据,当用户从一个表单导航到另一个表单时(第二个,第三个等)?

希望你理解它。任何帮助表示赞赏。

1 个答案:

答案 0 :(得分:1)

首先,请阅读how-and-when-to-use-singleton-classes and var's

为了实现您的功能,请不要使用单件阵列。

你可以做两件事。

第一种方式,为每个表单创建一个NSMutableArray的属性,并将其填充为自己的视图加载方法。

@property(nonatomic,strong)NSMutableArray *formDetailsArray

第二种方式是最糟糕的情况,为您的父表单创建一个全局NSMutableArray属性,并在您的子表单中访问它。

父表单

 @property(nonatomic,strong)NSMutableArray *formParentArray;

[formParentArray addObject:form1childArray];
[formParentArray addObject:form2childArray];
[formParentArray addObject:form3childArray];
[formParentArray addObject:form4childArray];

Child1表格

datasource = parentFormObj.form1childArray

Child2表格

datasource = parentFormObj.form2childArray