gpt4 book ai didi

IOS 添加和删除 subview 内存泄漏

转载 作者:行者123 更新时间:2023-11-28 19:20:17 26 4
gpt4 key购买 nike

我已经尝试了几天来解决这个问题,但我觉得我做错了,或者只是遗漏了一些非常简单的东西。

我有一个采用滑动手势的单一 View ,在滑动时,它将尝试从 nib 文件创建 subview 。我能够加载 subview 并删除 subview ,但在某处与分配 View 或删除 View 有关的地方存在内存泄漏。

在当前 View .m 文件中,我正在合成我的第二个 View ,在第一个 View 的 .h 文件中,我还有一个:@class 设置 View Controller

设置 View Controller *设置 View

然后@property 非原子保留设置 View

在下面的代码中,我正在分配 subview 。它在没有 [settingsview release[ 的情况下工作,但是我得到了一个错误的内存错误。

在代码的第二部分中,它是来自settingsviewcontroller 的函数,用于删除 View 。它需要用户的操作并在屏幕外动画 View ,并尝试将其删除,或者至少我认为它也尝试过。

- (IBAction)swiping:(id)sender {
//SettingsViewController *SettingsView = [[SettingsViewController alloc] init];

settingsView = [[SettingsViewController alloc] init];

CATransition *animation = [CATransition animation];
[animation setDuration:0.5f];
[animation setType:kCATransitionPush];
[animation setSubtype:kCATransitionFromTop];
[animation setTimingFunction:[CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseInEaseOut]];

[self.view addSubview:[settingsView view]];
[[self.view layer] addAnimation:animation forKey:@"SwitchToView1"];

[settingsView release];
}



- (IBAction)rollOut:(id)sender {
UIView *currentView = self.view;
[UIView beginAnimations:nil context:nil];
[UIView setAnimationDidStopSelector:@selector(removeFromSuperview)];
//[UIView setAnimationDidStopSelector:@selector(release)];
[UIView setAnimationDuration:0.5f];
currentView.transform = CGAffineTransformMakeTranslation(currentView.frame.origin.x, 480);
[UIView commitAnimations];
}

请给我一些指导,如果你给我指出正确的方向,我就能理解该怎么做。

最佳答案

[self.view addSubview:[settingsView View ]];

这段代码不保留你的settingsView,而是“settingsview的 View ”,所以如果你调用[settingsView release]; settingsView 被释放,如果你在某处调用 settingsView,你会得到 bad memory 错误。

这个“@property nonatomic retain for the settingsview”,所以你可以替换[settingsView release];通过 self.settingsView = nil;

关于IOS 添加和删除 subview 内存泄漏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9509750/

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