Ios 减少我的应用程序的内存

Ios 减少我的应用程序的内存,ios,xcode,memory-management,uitabbarcontroller,Ios,Xcode,Memory Management,Uitabbarcontroller,我几乎完成了我的第一个应用程序漫长的道路,但有趣的时间 我尝试了一个星期来减少我的应用程序的内存使用,但如果这不起作用,我想确保它被使用后是一个视图,但我看到没有发生 我的searchviewController没有内存问题,更多的是使用100 mb ram的DetailsViewController 我将尝试在摘要中显示我的应用程序是如何构建的: Searchview controller The main screen --> UIViewController with table

我几乎完成了我的第一个应用程序漫长的道路,但有趣的时间

我尝试了一个星期来减少我的应用程序的内存使用,但如果这不起作用,我想确保它被使用后是一个视图,但我看到没有发生

我的searchviewController没有内存问题,更多的是使用100 mb ram的DetailsViewController

我将尝试在摘要中显示我的应用程序是如何构建的:

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!