请求有关目标C数组和字典的一般建议

时间:2012-10-27 04:00:28

标签: iphone objective-c multidimensional-array

我有一个工作的应用程序,它有一个plist作为数据容器。从viewdidload中的plist生成一个字典数组。根据分段控制选择和对象键,从主阵列生成三个不同的子阵列。然后这些数组填充UIickerView

使用此app时,用户每次都会选择不同的段,然后应用程序必须每次都遍历整个阵列以生成所需的子阵列。

我应该继续在viewdidload中生成这些子数组,以便不必重复生成它们吗?

这不是一个大文件(100个词典)。它会提高应用程序的整体效率吗?

1 个答案:

答案 0 :(得分:0)

您可以在每个用户操作上迭代编号为数百的集合而不会注意到它,但使用属性缓存子数组也非常容易。

懒惰的初始化是一个很好的模式......

@property (nonatomic, strong) NSArray *myFilteredArray;
//...
@synthesize myFilteredArray=_myFilteredArray;

- (NSArray *)myFilteredArray {

    if (!_myFilteredArray) {
        NSMutableArray *array = [NSMutableArray array];
        // add to array using the filter logic you have already
        _myFilteredArray = [NSArray arrayWithArray:array];
    }
    return _myFilteredArray;
}

如果不出意外,这会使您的过滤代码很容易找到,并为每个数组分开,这可能比在viewDidLoad中将它全部隐藏起来更漂亮。