Iphone 自定义UITableViewCell在init*中设置所有内容或使用属性

Iphone 自定义UITableViewCell在init*中设置所有内容或使用属性,iphone,ios,cocoa-touch,uitableview,Iphone,Ios,Cocoa Touch,Uitableview,我想知道当使用自定义UITableViewCells时,什么是最好的方法/设计 我这样做的一种方法是使用init,它接受设置UITableViewCell所需的所有参数。如-initWithLabel:groups:error 然后我会像CustomUITableViewCell*cell=[CustomUITableViewCell alloc]initWithLabel:@“Hello”组:@[@“1”,“2”,“3”]错误:否] 然后,也许以后如果我需要将CustomUITableView

我想知道当使用自定义
UITableViewCell
s时,什么是最好的方法/设计

我这样做的一种方法是使用init,它接受设置
UITableViewCell
所需的所有参数。如
-initWithLabel:groups:error

然后我会像
CustomUITableViewCell*cell=[CustomUITableViewCell alloc]initWithLabel:@“Hello”组:@[@“1”,“2”,“3”]错误:否]

然后,也许以后如果我需要将
CustomUITableViewCell
的错误更新为YES,我只需重新加载
CustomUITableViewCell
的单元格,并在init中提供YES

现在我想知道是否为单元格设置一个setter“更好”,比如
-(void)setError:(BOOL)error
,我可以在需要更新单元格错误时设置,而不是重新加载整个单元格


比较这两个选项的优缺点是什么?

如果您有一个可以更改的成员变量,那么它肯定应该使用setter(并且是一个属性),这样您就不必每次都替换该类。源代码将更清晰,程序将更高效。如果您认为鼓励客户在创建新对象时显式设置该变量是一个好主意,那么您也可以将其包含在init中。

您的第一选择似乎不是一个好方法。若你们每次都在创建单元格,那个就好了。但实际上,表视图只会创建10-15个单元格(视情况而定),以后它们将被重用。因此,除非您在外部调用初始化,否则初始化不会执行(这不好)

因此,自定义单元格中的好方法是使用属性并公开数据源对象的
cellForRow
中将要更改的所有内容。制作标签,错误。。。作为属性,如果外部类可以访问它。因此,您可以轻松更改任何值