我刚刚添加了一些取自 Apple docs 的代码它显示了如何使用从 nib 创建的自定义 UITableViewCells。我是 iOS 开发的新手,所以我仍在学习正确的内存管理,而且代码对我来说并不完全清楚它是如何工作的。当我运行 Allocations 工具时,它会在下面的代码中显示未分配的内存。具体来说,它显示在 View Controller 从导航堆栈中弹出后 UITableViewCells 仍然存在...
- (UITableViewCell *)tableViewUITableView *)tableView cellForRowAtIndexPathNSIndexPath *)indexPath
{
static NSString *CellIdentifier = @"MyCustomCellIdentifier";
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if (cell == nil) {
[[NSBundle mainBundle] loadNibNamed"MyCustomCell_iPhone" owner:self options:nil]; //<--Allocations instrument complaining about this line
cell = customCell;
[self setCustomCell:nil];
}
return cell;
}
customCell
是在这个 View Controller 中定义的一个实例变量,像这样...
IBOutlet UITableViewCell *customCell;
@property (nonatomic, retain) IBOutlet UITableViewCell *customCell;
这段代码有问题吗?
非常感谢您的智慧!
我比较了文档中的代码:
if (cell == nil) {
[[NSBundle mainBundle] loadNibNamed"TVCell" owner:self options:nil];
cell = tvCell;
self.tvCell = nil;
}
使用您的代码:
if (cell == nil) {
[[NSBundle mainBundle] loadNibNamed"MyCustomCell_iPhone" owner:self options:nil];
cell = [self customCell];
[self setCustomCell:nil];
}
您分配 cell
的行似乎存在差异。 Apple 的示例代码使用 tvCell
,实例变量,而您使用 [self customCell]
,实例变量的属性 getter 强>。这可能是原因吗?尝试改变
cell = [self customCell];
到
cell = customCell;
关于iOS 开发 : How am I mismanaging memory in this code?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4347600/
欢迎光临 OStack程序员社区-中国程序员成长平台 (https://ostack.cn/) | Powered by Discuz! X3.4 |