如何解决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];
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。