gpt4 book ai didi

objective-c - [NSBundle mainBundle] loadNibNamed 上的仪器显示内存泄漏

转载 作者:塔克拉玛干 更新时间:2023-11-02 21:47:46 26 4
gpt4 key购买 nike

friend ,

我在仪器中运行我的代码,它显示 5 行内存泄漏(在以下代码之外)即 cell = [[[NSBundle mainBundle] loadNibNamed:@"ZoomCustomVideoCell" owner:self options:nil] objectAtIndex:0];

我不知道为什么它在那里显示内存泄漏以及相同的解决方案是什么

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {

static NSString *CellIdentifier = @"ZoomCustomVideoCell";

ZoomCustomVideoCell *cell = (ZoomCustomVideoCell *)[tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if (cell == nil) {
cell = [[[NSBundle mainBundle] loadNibNamed:@"ZoomCustomVideoCell" owner:self options:nil] objectAtIndex:0];

cell.m_zoomMsg = [[[ZoomMessage alloc] init] autorelease];
[[cell m_zoomMsg] initWithJSON:[m_tmpVideoList objectAtIndex: indexPath.row]];
[[cell videoLabel] setText:[cell.m_zoomMsg _from]];
[[cell m_labelLocation] setText:[NSString stringWithFormat:@"%@", cell.m_zoomMsg._location]];
[[cell videoLabelB] setText:[cell.m_zoomMsg _uploadDesc]];
NSLog(@"UserName: %@", [[cell videoLabel] text]);

[cell refreshImage];

}

return cell;
}

最佳答案

loadNibNamed:owner:options:方法将参数传递为 owner:作为 Nib 的“文件所有者”。这意味着 Nib 中的 socket 将连接到您作为所有者传递的任何内容。由于您正在通过 self作为所有者,它将覆盖以前为 self 分配的所有网点与新加载的 Nib 中的那些。为了建立导出连接,nib 加载程序使用 setValue:forKey:在提供的所有者上。如果您已将 outlets 设置为具有正确内存管理的属性,那么应该没有泄漏。如果您只有 outlets 作为实例变量,那么(目前还不清楚,但我假设)对象在设置时会自动保留。

这里有两种解决方案:

  1. 为您的网点提供适当的内存管理,例如将它们转换为属性(如果它们还没有)并确保它们具有正确的内存管理属性。

  2. loadNibNamed:owner:options: 提供不同的所有者一种方法,一种尚未建立任何网点,另一种你知道会适本地处理这些网点。

关于objective-c - [NSBundle mainBundle] loadNibNamed 上的仪器显示内存泄漏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13064111/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com