Iphone 关于赋值的一个问题

Iphone 关于赋值的一个问题,iphone,properties,uitableview,Iphone,Properties,Uitableview,编辑2:我以前计划的可能是个坏主意,现在我改变了设计:我的UITableViewController有一个包含我的UITextFields的所有值的数组,我正在使用委托更新数组中的值。(如果一个UITableViewCell中的值发生更改,我将发送一条包含新值和单元格索引的消息) 原始问题 我想创建一个UITableViewCell子类。要访问我的单元格,我希望在我的UITableViewController中有一个包含所有单元格的NSMutableArray。每当我在-tableView:c

编辑2:我以前计划的可能是个坏主意,现在我改变了设计:我的
UITableViewController
有一个包含我的
UITextField
s的所有值的数组,我正在使用委托更新数组中的值。(如果一个
UITableViewCell
中的值发生更改,我将发送一条包含新值和单元格索引的消息)


原始问题

我想创建一个
UITableViewCell
子类。要访问我的单元格,我希望在我的
UITableViewController
中有一个包含所有单元格的
NSMutableArray
。每当我在
-tableView:cellforrowatinexpath:
中创建新单元格时,我都会将其添加到数组中。但是,单元格应该知道此数组。我将为
UITableViewCell
声明这样的属性:

@property (nonatomic, assign) NSMutableArray *cellsArray;
每当我创建一个新单元时,我都会将其
cellsArray
设置为我的数组

我(可能很简单)的问题是:
cellsArray
会在
UITableViewController
中保存指向数组的指针,并且当我向
UITableViewController
的数组添加内容时,单元格也会知道这一点,即可以访问它,这是正确的吗

编辑:
UITableViewCell
s包含
UITextField
s。我以前依赖于
-cellforrowatinexpath:
方法和
visibleCells
数组,但是当单元格移出视图时,它们的
UITextFields
的内容也会丢失。然后我决定将单元格存储在一个数组中。当用户点击save时,我遍历数组并存储值。另外,我想自动更新保存按钮的
enabled
属性,这取决于是否所有单元格都包含某些内容-为此,我也需要所有单元格

这些单元格应该知道其他单元格的情况,以便在按下键盘上的返回/下一个键时可以选择下一个单元格


如果有更好的方法,我很高兴听到他们

我相信答案是肯定的

我对
assign
的理解是,您可以为这样的变量赋值,并且原始对象的保留计数不会增加。类似地,您不需要释放对象的
dealloc
方法中的变量。但是,您可能会面临这样的风险:原始数组消失,然后
cellsArray
指向不再存在的对象

当我想将一个对象的引用传递给另一个对象(例如,要显示或以其他方式操纵该对象的视图控制器)时,我使用
assign
。在后一个对象中,我不会释放指向该对象的指针

您还可以看到
assign
id
属性一起使用,如

@property (nonatomic, assign) id<SomeProtocol> _myDelegate;
@property(非原子,赋值)id\u myDelegate;
综上所述,除了
id
案例外,我经常觉得使用
retain
来保留属性“更安全”,并确保在
dealloc
:-)中释放


无论如何,我认为这是区别的关键。

我相信答案是肯定的

我对
assign
的理解是,您可以为这样的变量赋值,并且原始对象的保留计数不会增加。类似地,您不需要释放对象的
dealloc
方法中的变量。但是,您可能会面临这样的风险:原始数组消失,然后
cellsArray
指向不再存在的对象

当我想将一个对象的引用传递给另一个对象(例如,要显示或以其他方式操纵该对象的视图控制器)时,我使用
assign
。在后一个对象中,我不会释放指向该对象的指针

您还可以看到
assign
id
属性一起使用,如

@property (nonatomic, assign) id<SomeProtocol> _myDelegate;
@property(非原子,赋值)id\u myDelegate;
综上所述,除了
id
案例外,我经常觉得使用
retain
来保留属性“更安全”,并确保在
dealloc
:-)中释放


无论如何,我认为这是区别的关键。

不是你问题的直接答案,但这听起来像是一个非常糟糕的设计。为什么一个细胞需要知道它的同胞?在一个单元格中发生并对其他单元格产生影响的任何事件/更改都应由表视图控制器处理。单个单元格应该是独立的实体,不需要了解彼此的状态


其次,不需要引入另一个数组来管理表单元格。表视图已经有一个属性
visibleCells
,您可以从表视图控制器访问该属性。而且无论如何都不必与不可见的单元格交互,因为这些单元格是由表视图及其重用工具管理的。

这不是您问题的直接答案,但这听起来像是一个非常糟糕的设计。为什么一个细胞需要知道它的同胞?在一个单元格中发生并对其他单元格产生影响的任何事件/更改都应由表视图控制器处理。单个单元格应该是独立的实体,不需要了解彼此的状态


其次,不需要引入另一个数组来管理表单元格。表视图已经有一个属性
visibleCells
,您可以从表视图控制器访问该属性。而且无论如何都不必与不可见单元交互,因为这些单元由表视图及其重用工具管理。

为什么希望单个单元能够访问整个阵列?我也很奇怪为什么要这样做。在我看来,你似乎冒着很大的风险干扰iOS尝试对单元格进行出列和重用,因此数组中的引用可能会过时。你为什么要保留一个单元格数组