好的,所以我正在处理两组极其相似的数据,同时,这些数据集都是对象内的全局 NSMutableArrays。
data_set_one = [[NSMutableArray alloc] init];
data_set_two = [[NSMutableArray alloc] init];
加载了两个新的 NSMutableArray,需要将它们添加到旧的现有数据中。这些数组也是全局的。
xml_dataset_one = [[NSMutableArray alloc] init];
xml_dataset_two = [[NSMutableArray alloc] init];
为了减少代码重复(并且因为这些数据集非常相似),我在类中编写了一个 void 方法来处理两个数组的数据组合过程:
-(void)constructData:(NSMutableArray *)data fromDownloadArray:(NSMutableArray *)down withMatchSelector:(NSString *)sel_str
现在,我对面向对象编程有了不错的理解,所以我在想,如果我要像这样使用数据中的全局数组调用该方法......
[self constructData:data_set_one fromDownloadArray:xml_dataset_one withMatchSelector:@"id"];
然后全局 NSMutableArrays (data_set_one) 将反映方法内“数组”发生的变化。可悲的是,情况并非如此, data_set_one 没有反映方法之外的更改(例如:数组中的新对象)。
这是问题的代码片段
// data_set_one is empty
// xml_dataset_one has a few objects
[constructData:(NSMutableArray *)data_set_one fromDownloadArray:(NSMutableArray *)xml_dataset_one withMatchSelector:(NSString *)@"id"];
// data_set_one should now be xml_dataset_one, but when echoed to screen, it appears to remain empty
这里是该方法的代码要点,任何帮助表示赞赏。
-(void)constructData:(NSMutableArray *)data fromDownloadArray:(NSMutableArray *)down withMatchSelector:(NSString *)sel_str {
if ([data count] == 0) {
data = down; // set data equal to downloaded data
} else if ([down count] == 0) {
// download yields no results, do nothing
} else {
// combine the two arrays here
}
}
此项目未启用 ARC。
谢谢你们的帮助!抢