Ios 减少我的应用程序的内存
我几乎完成了我的第一个应用程序漫长的道路,但有趣的时间 我尝试了一个星期来减少我的应用程序的内存使用,但如果这不起作用,我想确保它被使用后是一个视图,但我看到没有发生 我的searchviewController没有内存问题,更多的是使用100 mb ram的DetailsViewController 我将尝试在摘要中显示我的应用程序是如何构建的:Ios 减少我的应用程序的内存,ios,xcode,memory-management,uitabbarcontroller,Ios,Xcode,Memory Management,Uitabbarcontroller,我几乎完成了我的第一个应用程序漫长的道路,但有趣的时间 我尝试了一个星期来减少我的应用程序的内存使用,但如果这不起作用,我想确保它被使用后是一个视图,但我看到没有发生 我的searchviewController没有内存问题,更多的是使用100 mb ram的DetailsViewController 我将尝试在摘要中显示我的应用程序是如何构建的: Searchview controller The main screen --> UIViewController with table
Searchview controller
The main screen --> UIViewController with tableview
in the didSelectRowAtIndex i have:
DetailsViewController *controller = [[DetailViewsController alloc]initWithNibName:@"DetailsViewController" bundle:nil];
SearchResult *searchResult = [searchResults objectAtIndex:indexPath.row];
controller.searchResult = searchResult;
DetailsViewController
当选择一行时,会调用详细信息屏幕,它是一个UIview,具有子视图自定义滚动视图自定义滚动视图自定义滚动视图具有icarousel自定义UIview
.h
@property (nonatomic,weak) SearchResult *searchResult;
.m
@property (nonatomic, retain) iCarousel *carousel;
@property (nonatomic, retain) UINavigationItem *navItem;
实施:
MGBox *tablesGrid, *table1;
ViewDidLoad:
//Add barButton
UIBarButtonItem *reactButton = [[UIBarButtonItem alloc]..];
carousel = [[iCarousel alloc] init..];
//Add Tablesgrid
tablesGrid = [MGBox boxWithSize:tablesGridSize];
tablesGrid.contentLayoutMode = MGLayoutGridStyle;
[self.scrollview.boxes addObject:tablesGrid];
//Add Table
table1 = MGBox.box;
[tablesGrid.boxes addObject:table1];
在此之后,我有了一些函数,可以将搜索结果添加到标签中,并填充最多有6个项目的icarousel,icarousel是一个uiview,我将其作为子视图添加到scrollview等
当我按下导航栏并返回主视图控制器时,它不会解除锁定视图,为什么?n记录了解除锁定,但从未调用。内存警告后,它调用ViewDidUnload并释放一些内存,但仍然没有dealloc
我没有提到其他物体,对吗?除了搜索结果,但我将其设置为“弱”,所以它不应该是参考,对吗
一些信息:
在mainview上搜索后,我有:
活动字节数:5,75MB活动字节数:27.342过渡字节数:总计68.200
字节:25.30 mb
选择一行并进入detailsViewController后,我有:
活动字节:5.4 mb
生活费:32.498
过渡期:76.488
总字节数:29.55 MB
拖动icarousel的子视图行观看图片后:
活动字节:5.5 mb
生活:32.798
过渡期:122.850
总字节数:36.41 MB
在自定义表视图中选择一些表后
活动字节:5.7 mb
生活费:33.508
过渡期:161.80
总字节数:40.12 MB
在应用程序中打开链接并返回后,将在模式视图中打开并再次关闭该链接
活动字节:6.7 mb
生活:43.821
过渡期:371.761
总字节数:144.95 MB
单击图片并使照片全屏显示并返回详细信息后,屏幕视图再次打开模式并关闭
活动字节:6.76 mb
生活费:43.798
过渡层:400.850
总字节数:155.69 MB
如果我回到另一行,它永远不会少,它只是增加
不要对我太苛刻,也不要无缘无故地把话题关了
给我一些提示或建议,或者如果你不知道问题出在哪里,请告诉我这些是什么:
活动字节-活动-暂时-总字节-总字节
我要感谢本网站提供的所有信息,因为没有它,我将永远无法回答您的问题: 当我按下导航栏时你说的。我希望你是说你突然回来了。按此按钮可转到辅助控制器/场景。你得回去。看见同样,每次显示ViewController时,都应该有一个关联的DismissViewController激活 如果使用故事板,请确保故事板中没有圆形分段,例如从A到B的分段和从B到A的分段。有关此主题的简要讨论,请参阅 另一种可能性是强参考循环,即保留循环。看。任何可能对控制器保持强引用的内容都可能导致此问题。不太明显的例子包括重复NSTimer对象等 更新: 一些关于内存管理的总顾问 如果您有内存问题,您应该始终通过运行代码。这是特别重要的,如果你不使用ARC,或者如果你使用任何核心基础调用,但这通常是一个很好的第一步,遇到任何内存问题。 有关如何使用仪器查找应用程序泄漏的指南,请参阅 有时,当内存分配出现峰值时,确定导致峰值的原因很有用。有关如何从分配中获得更具意义的分析这些分配来源的具体建议,请参阅本文第4点。简而言之,突出显示分配中一个无法解释的跳跃,设置底部窗口以显示调用树,隐藏系统库,并查看在哪个例程中消耗内存
我没有使用故事板…将所有内容重构到故事板是一个好主意吗?@user1876006不,没有必要。但同样的原则也适用于NIB。如果你从A推到B,你只需要确保你从不从B推到A,而是从B弹回到A。这在逻辑上等同于确保一个人的故事板没有循环引用。我试图澄清我的答案。我在appDelegate中添加的导航栏会生成“后退”按钮,我想这是否会弹出视图?@user1876006是的,如果你只是点击系统生成的“后退”按钮,那么你弹出的很好。如果您添加了自己的手册,但是
如果不按下ViewController或presentViewController,那么这是有问题的。仅供参考,我已经为分析代码添加了一些额外的总顾问;b发现泄漏;如果由于某种原因,你不确定分配是由什么引起的,我将阅读你发布的内容,并试图找到它为什么不释放的答案!tnx m8!