在我的应用程序中,我有一个视图,我应用过滤器。因此,当我回来更改过滤器但不按下“应用”按钮和“后退”按钮时,我希望原始过滤器仅在我现在更改之前应用这些过滤器。
EG。过滤器 - 城市 - A,B,C - 应用 - 保存A,B,C过滤器 再来一次过滤器 - 城市 - D,E - 按下后退按钮 - 重新获得A,B,C过滤器
为此我正在做的就是当打开filterview的viewdidload时,我将filters数组保存到克隆数组中
clonedFiltersData = [[NSMutableArray alloc] initWithArray:[[WMGFilterManager sharedManager] arrayForType:type]];
这工作正常,但是当我改变某些东西时 [[WMGFilterManager sharedManager] arrayForType:type]
就像删除一些过滤器或东西一样,它实际上会从原始数组中删除。任何人都可以告诉如何启动数组,使其不受其引用的影响。
答案 0 :(得分:0)
将copyItems:YES选项添加到initWithArray。如本例所示;
NSArray *deepCopyArray=[[NSArray alloc] initWithArray:someArray copyItems:YES];
您需要深层复制,而不是浅层复制(复制指针)。