我使用Apple记录的loadNibNamed:owner:options:
从nib文件加载自定义UITableViewCell:
ItemCell *cell = (ItemCell *)[tableView dequeueReusableCellWithIdentifier:cellId];
if (cell == nil) {
// (1)
[[NSBundle mainBundle] loadNibNamed:@"ItemCell" owner:self options:nil];
// (2)
cell = self.itemCell;
self.itemCell = nil;
// (3)
// code continues here
}
视图控制器的类声明:
@interface MyViewController : UIViewController<UITableViewDelegate, UITableViewDataSource> {
@private
UITableView *tableView;
ItemCell *itemCell;
}
@property (nonatomic, retain) IBOutlet ItemCell *itemCell;
MyViewController是ItemCell的文件所有者。
我正在观察以下内容:
self.itemCell
保留计数为0 self.itemCell
保留计数为2 self.itemCell
保留计数为0 cell
保留计数为1 有人可以解释一下:
self.itemCell
保留计数在(2)和(3)之间从2变为0? cell
的保留计数等于1? 答案 0 :(得分:3)
关于你的两个问题的答案,“实施细节”。
只要您平衡保留和释放,您的工作就完成了。解释为什么保留计数是任何给定的绝对值将需要访问框架本身的实现。
答案 1 :(得分:0)
Ooops,犯了一个错误,在(3)
在(3)中,我正在调用[self.itemCell retainCount]
来查看保留计数,但由于self.itemCell
已经设置为nil
,所以我得到的只是0!不知道我是怎么错过的......
在(3)中,cell
保留计数为1,这是正常的(单元格由loadNibNamed:owner:options:
返回的数组保留)