gpt4 book ai didi

ios - 性能工具 - 泄漏

转载 作者:行者123 更新时间:2023-11-28 23:12:59 30 4
gpt4 key购买 nike

如果我使用性能工具测试我的代码 - 泄漏,它没有检测到任何泄漏。这是否意味着代码没有泄漏任何内存?

我有一个越狱的 iPhone,我可以监控可用内存。如果有人知道,那就是 SBSettings。我测试了我的应用程序,它有一个 UITableView,当我滚动 tableView 时,我可以看到可用内存下降。从 300MB 到 30MB,似乎不能再下降了。对于游戏以外的其他应用程序,它通常不会下降太多。我正在使用带有 2 个按钮、1 个 TextView 和 3 个 UILabel 的自定义 UITableViewCell。

所以,是的。如果性能工具未检测到任何泄漏,我安全吗?

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
static NSString *CellIdentifier = @"StatusTableCell";

StatusTableCell *cell = (StatusTableCell *)
[tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if (cell == nil) {
NSArray *topLevelObjects = [[NSBundle mainBundle]
loadNibNamed:@"StatusTableCell"
owner:nil options:nil];
for (id currentObjects in topLevelObjects){
if ([currentObjects isKindOfClass:[StatusTableCell class]]){
cell = (StatusTableCell *) currentObjects;
break;
}
}
[cell.cancelButton addTarget:self action:@selector(cancelButton:) forControlEvents:UIControlEventTouchUpInside];
}
/// some other stuff
return cell;
}

最佳答案

不,您不一定安全。

当程序不再引用某个对象时,就会发生内存泄漏。因此,如果一个对象被释放,但它保留的对象没有被释放(例如,在 dealloc 方法中没有正确释放),就会发生泄漏。

但是,如果所属对象本身从未被释放,则不会检测到泄漏。

要查找此类内存问题,请运行分配工具工具。单击 Mark Heap 按钮,并在应用程序中执行某种可重复的操作(例如,在表格 View 中选择一行以将详细 View 推送到导航堆栈,然后点击返回按钮)。再次点击标记堆按钮。然后重复这个 Action 几次。理想情况下,您应该看不到堆增长,并且在堆发射之间没有持久对象。

关于ios - 性能工具 - 泄漏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7569642/

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