好吧,我正在處理兩組非常相似的數據,同時這些數據集都是對象內的全局NSMutableArrays。使用指針來調整目標中的全局對象-c
data_set_one = [[NSMutableArray alloc] init];
data_set_two = [[NSMutableArray alloc] init];
加載了兩個新的NSMutableArrays,它們需要添加到舊的現有數據中。這些陣列也是全球性的。
xml_dataset_one = [[NSMutableArray alloc] init];
xml_dataset_two = [[NSMutableArray alloc] init];
爲了減少重複代碼(因爲這些數據集是所以類似)我寫的類內的空隙的方法來處理這兩個陣列中的數據組合處理:
-(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並未反映方法外部的更改(例如:Array內的新對象)。
這裏的問題是
// 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。
感謝您的幫助! Rob
你想做什麼? –
我希望data_set_one保留從void方法給出的值。它被傳入,然後通過指針「數據」進行更改。問題是,對數據所做的更改不是針對data_set_one進行的。編輯,對不起,我發現很難解釋我的問題:/ – Rob
你需要保留它的價值。 newValue = oldValue,其中oldValue得到釋放結果nil到newValue。這是這裏的問題。 –