在iOS中重新创建小型UIViews

时间:2013-03-30 01:48:43

标签: ios memory-management

我创建了一个gridView,它显示了数组productsArray中的所有项目。此数组包含自定义类类型Products的对象。下面显示的功能是使用Products对象中的信息创建视图数组。现在我想根据父制造商过滤产品。

-(NSArray*)arrayOfObjectToBeAddedToGriView{
    NSMutableArray* productsScrolLViewItemsArray = [[NSMutableArray alloc] init];
    for (Products* product in productsArray){
            ProductScrollViewItem* productScrollViewItem = [[ProductScrollViewItem alloc] initWithFrame:CGRectMake(0,0,0,0) withProduct:product];
            [productScrollViewItem addTarget:self action:@selector(productInGridViewTapped:) forControlEvents:UIControlEventTouchUpInside];
            [productsScrolLViewItemsArray addObject:productScrollViewItem];
    }
    return (NSArray*)productsScrolLViewItemsArray;
}

根据制造商过滤

-(void) filterBasedOnManufacturer:(Manufacturer*)selectedManufacturer{
     [productsArray removeAllObjects];
     [productsArray addObjectsFromArray:[selectedManufacturer.productsForManufacturer allObjects]];
     // relod the gridView with filtered products
    [productCatalogueGridView reloadItems:[self arrayOfObjectToBeAddedToGriView]];
}

productScrollViewItem是一个大小为100,100的小视图,带有ImageView和两个标签。我关心的是每次为过滤的Products Objects重新初始化所有productScrollViewItem。我想知道过滤掉ProductsArray和productScrollViewItemArray是否会更好,或者无关紧要,因为我重新初始化的视图是非常小的视图。感谢。

1 个答案:

答案 0 :(得分:0)

如果您的目标是iOS> = 6,则可以使用UICollectionView,它们可以完全按照您的需要进行操作,并且可以重复使用单元格,以避免重新创建vies的开销。它们非常接近UITableViews。另一个解决方案是找到一些共享属性或构建自己的回收机制。