gpt4 book ai didi

ios - 为什么当我执行 removefromsuperview 时内存仍然存在?

转载 作者:行者123 更新时间:2023-11-29 13:51:20 27 4
gpt4 key购买 nike

我目前正在做一个 ipad 项目并找到了这个。所以这是我的结构

我将 uiviewcontroller 子类化为 customizedVC,像这样

@protocol customizedVCDelegate

-(void)viewclosed:(UIView *)view oldviewcontroller:(UIViewController *)oldvc newvcname:(UIViewController *)newvc;

@end


@interface customizedVC : UIViewController {
id <customizedVCDelegate> delegate;
}

@property (assign) id <customizedVCDelegate> delegate;

@end

在 demoipadappDelegate 中,这是切换 View 的主干,我采用了协议(protocol)并实现了 viewclosed 功能。我有很多 View ,每个 View 都将从 nib 加载。所以我在 demoipadappDelegate 中加载第一个

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {    

//loading openvinview
openingVC *vc = [[openingVC alloc] initWithNibName:@"openingview" bundle:nil];
vc.delegate = self;
[window addSubview:vc.view];
[window makeKeyAndVisible];

return YES;
}

要切换 View ,我将在每个 View Controller 中触发 viewClosed。例如,我有 VC1,想切换到 VC2。我在 vc1 中触发了一个 viewClosed。因为 vc1 的委托(delegate)是 demoipadappDelegate,所以实际上所有 vc 的委托(delegate)都是 demoipadappDelegate。所以 demoipadappDelegate 将收到事件并执行此操作。这是在 demoipadappDelegate

-(void)viewclosed:(UIView *)view oldviewcontroller:(UIViewController *)oldvc newvcname:(UIViewController *)newvc;
{

self.currentVC = (customizedVC *)newvc;
self.currentVC.delegate = self;
[window addSubview:self.currentVC.view];

[view removeFromSuperview];
[oldvc release];

}

我预计内存使用率会下降。它没有。我还检查了在每个 vc 中,我已经手动释放了我分配的任何内容。所以事实并非如此。

抱歉我的英语不好,我希望我已经解释清楚了

最佳答案

您确定您使用的是正确的外壳吗?

该方法称为 removeFromSuperview ,而不是 removefromsuperview

关于ios - 为什么当我执行 removefromsuperview 时内存仍然存在?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3278684/

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