Objective-C中的指针和数据分配

问题描述

| 我在处理Objective-C中的指针时遇到麻烦。基本上,我的课堂结构如下:
UITableView *list;
NSArray *objArray;
UIPickerView *pickerCtrl;
我的“列表”显示objArray中包含的数据,它是一个临时结构,链接到各种类型的自定义NSObject(未存储在我的当前对象中)。 在列表中选择一个元素将显示\“ pickerCtrl \”,根据当前选择的TableView行显示适当的数据。 我的目标是用newObject \的数据(在PickerView中选择)替换oldobject \的数据(外部对象,由objArray访问)。像这样 :
- (void)pickerView:(UIPickerView *)thePickerView didSelectRow:(NSInteger)row inComponent:(NSInteger)component {
    id oldobject = [objArray objectAtIndex:[[list indexPathForSelectedRow] row]];
    id newObject = [pickerData objectAtIndex:row];

    *oldobject = *newObject;
}
在调试器中,oldobject和newObject都具有正确的内存地址。问题是,似乎没有分配完成,并且旧数据永远不会被\“ newObject \”中的数据替换。 我在这里想念什么?     

解决方法

您认为这不是处理可变数组的正确方法,因为它太底层了。 相反,请尝试以下操作:
[objArray removeObject:oldObject];
[objArray addObject:newObjec];
您也可以使用
insertObject:atIndex:
方法。有关更多信息,请参见参考文献“ 4”。     ,采用:
- (void)exchangeObjectAtIndex:(NSUInteger)idx1 withObjectAtIndex:(NSUInteger)idx2
例:
[objArray exchangeObjectAtIndex:[[list indexPathForSelectedRow] row],row];