首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ios在presentViewController后迁移项目内存清理

ios在presentViewController后迁移项目内存清理
EN

Stack Overflow用户
提问于 2012-06-17 14:39:11
回答 3查看 874关注 0票数 1

在我迁移到ARC之后使用仪器,我意识到从屏幕到屏幕的转换并不能清除内存。步骤示例:

1)主屏幕A ->游戏屏幕B=内存使用量的上升2)游戏完成,我从屏幕B返回主屏幕A

对于第二步,内存使用率不会降低。当从屏幕上删除屏幕B时,我希望释放屏幕B所消耗的内存.我该怎么做才能确保这种自由的发生?

从A到B:

GameVC_iPad *GameVC_iPad= [GameVC_iPad allocinitWithNibName:@"ClassicGameVC_iPad“bundle:nil];

从B返回A是使用以下代码完成的:

HomeVC_iPad *home = [HomeVC_iPad allocinitWithNibName:@"HomeVC_iPad“bundle:nil];home.modalTransitionStyle = UIModalTransitionStyleCrossDissolve;

有线索吗?

EN

回答 3

Stack Overflow用户

发布于 2012-06-17 14:42:37

当你回到A的时候,你应该做

代码语言:javascript
复制
[self dismissModalViewControllerAnimated:YES];

您目前正在做的是创建一个新的视图控制器,这是错误的,并在另一个时间导航到它,所以这就是正在发生的事情。

A‘.

还请注意,当您导航到一个新的viewController iOS缓存一些视图数据时,您将永远无法在返回之前和之后实现完美的内存使用,

票数 2
EN

Stack Overflow用户

发布于 2012-06-17 14:43:04

不要创建家庭控制器的新副本。使用dismissViewControllerAnimated:completion:返回到现有的。

票数 0
EN

Stack Overflow用户

发布于 2012-06-26 10:53:20

如果您为b创建一个委托类,例如,您将其命名为BDelegate,并使A的ViewController符合该协议,那么您可以很容易地将一条消息传递回A,您希望删除该消息。例如,您可以创建:

BDelegate:

代码语言:javascript
复制
@protocol BDelegate <NSObject>

- (void)dismissViewB;

@end

然后将A(头文件)的视图控制器更改为:

代码语言:javascript
复制
@interface AViewController : UIViewController <BDelegate>

显然,在那里使用视图控制器的实际名称。在视图控制器A的主体中,添加以下方法

代码语言:javascript
复制
- (void)dismissViewB {
    [self dismissViewControllerAnimated:YES completion:NULL];
}

就快到了!现在,在您的B视图控制器中,只要您想要实际删除该视图,我就假设您当前的位置。

代码语言:javascript
复制
HomeVC_iPad *home = [[HomeVC_iPad alloc]initWithNibName:@"HomeVC_iPad" bundle:nil];
home.modalTransitionStyle = UIModalTransitionStyleCrossDissolve; 
[self presentViewController:home animated:YES completion:nil];

代之以

代码语言:javascript
复制
[delegate dismissViewB];

现在,您需要内部视图控制器B是一个实例变量,指向A的委托并分配它。因此,在控制器B的标题中添加以下内容

代码语言:javascript
复制
NSObject<BDelegate> *delegate;

并为它添加适当的“属性”,并在主体中“合成”它。然后,当您在第一篇文章中创建视图控制器B时,只需添加

代码语言:javascript
复制
game.delegate = self

如果一切顺利,当您点击按钮或做任何您需要做的事情来删除视图时,视图控制器A将为您关闭它:)

希望这能有所帮助

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11072114

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档