Tag: 内存pipe理

如何展示视图控制器并closures所有其他视图?

我有大约20个视图控制器,与Modal和Push segues链接在一起。 现在,在最后一个视图控制器,我想再次切换回第一个视图控制器,就好像用户已经重新启动应用程序。 不幸的是,当我这样做 [UIViewController *viewController = [self.storyboard instantiateViewControllerWithIdentifier:@"InitViewController"]]; [self presentViewController:viewController animated:YES completion:nil]; 所有以前的视图控制器都不会被卸载。 没有调用一个viewDidUnload方法。 如何才能做到这一点?

为什么在debugging模式和运行模式下保留计数是不同的?

我知道ARC和MRC是如何工作的。 但在testing下面的代码时我感到困惑。 我不知道这是为什么发生。 为什么在debugging模式和运行模式下,同一个问题的保留计数是不同的? NSMutableArray *a = [NSMutableArray array]; [a addObject:@"abc"]; NSLog(@" 1 Retain count is %ld", CFGetRetainCount((__bridge CFTypeRef)a)); __weak NSMutableArray *b = a; NSLog(@" 2 Retain count is %ld", CFGetRetainCount((__bridge CFTypeRef)a)); a = nil; NSLog(@" 3 Retain count is %ld", CFGetRetainCount((__bridge CFTypeRef)b)); [b addObject:@"xys"]; NSLog(@" 4 Retain count is %ld", CFGetRetainCount((__bridge CFTypeRef)b)); 当我在运行模式下运行应用程序时,应用程序在NSLog(@" 3 […]

被取消初始化时,Unowned引用是否设置为“nil”?

我很快就对这个话题感到困惑,因为无主的引用必须总是有一个值,不能是可选的,也就是说它们不能被设置为'nil'….好吧,我只是在Apple文档中看到一个程序对于swift而言,对实例“B”的无主引用的实例“A”被去初始化并且在实例“B”被去初始化/释放之后解除分配……当var被去初始化/ dealloc并不意味着它们是设为'无'? 实例B是一个可选的,所以确保它可以容纳'零',但为什么实例'A'被取消初始化,当它应该总是有一个值? PS:如果这有帮助…..实例'B'是一个可选的types,强烈的引用实例'A'

RIPZoneDataAlloc

我正在使用仪器,看到这一点: # Address Category Timestamp Live Size Responsible Library Responsible Caller 4 0xd84ba00 Malloc 10.00 KB 00:01.896.732 • 10240 libRIP.A.dylib RIPZoneDataAlloc 什么是RIPZoneDataAlloc和libRIP.A.dylib? 这似乎占据了大部分的记忆。 这是不好的症状吗? 我正在使用ARC和i0S 5。 谢谢。

新的使用XCode仪器来解释iPhone开发的内存警告,需要指导

我正在做一个iPhone游戏,接收内存警告,我没有足够的经验来解释。 我一直在看一些iTunesU的教程,但我还是不是很擅长这个.. 在运行我的游戏时,我收到了各种内存泄漏,我想了解如何正确解释仪器中的堆栈跟踪显示。 附上ObjectAllocation仪器输出的截图 。 即使我缩放filter,我不设法过滤ObjectSummary中的数据 。 当GameScene被初始化并且所有数据被加载(ParallaxBackground,CCSpriteBatchNode)以及Sprite和子弹框被创build(在SpriteFrame的CCArray中)时, 1中的内存使用峰值发生。 大的蓝色峰值只是在加载时间,但应用程序冻结,然后崩溃后一段时间,从图中我看到内存使用(蓝色条)已经下降..所以我不安静得到这一点。 此外,当我尝试使用泄漏仪器的应用程序崩溃.. 我知道对于有经验的人来说这是一个非常愚蠢的问题,但是我只需要一些额外的帮助就可以开始使用这个工具集。 我认为内存问题是由于我分配的精灵caching类中的精灵,但我不确定这一点,因此想要调查这使用仪器,但无法find如何看到什么是造成内存警告的对象和如何访问堆栈跟踪 PS:我正在使用iPod第四代,我使用Cocos2D作为库 编辑:我也不明白为什么如果活字节只有1.01 MB的应用程序崩溃,为什么我仍然收到内存警告(见黑旗)。 这是由于某些指针引用某个空variables或由于内存分配过多? 1.01 MB对我来说不太好 编辑2:遵循Marion的build议,我使用活动监视器,并意识到有效的实际内存使用量是55.39 MB。 我误解了“活字节”这个词。 我会试着进一步深入研究这个问题,并且会让现在的问题不被接受,从而让其他人做出贡献。 如果在两天之内我不会有任何其他答案,我会标记为接受当前的答案。 谢谢! 非常感谢!

IOS7内存释放问题

我的IOS程序不是ARC,代码是这样的: 在.h文件中我定义了五个variables: { UILabel *label1,*lable2; UIView *dwView; NSMutableArray *wordsArray; } .m文件中的代码如下所示: – (void)viewDidLoad{ [super viewDidLoad]; // Do any additional setup after loading the view from its nib. viewArray=[[NSMutableArray alloc]init]; } -(void)QuestionA{ dwView=[[UIView alloc] initWithFrame:CGRectMake(20, 50, 975.0, 620)]; label1 = [[UILabel alloc]initWithFrame:CGRectMake(10.0, 160.0, 950.0, 170.0)]; label2 = [[UILabel alloc]initWithFrame:CGRectMake(30.0, 160.0, 950.0, 170.0)]; [dwView addSubview:label1]; [dwView addSubview:label2]; […]

不知道是否是内存泄漏(ARC)

我正在写自定义animation,我怀疑我有一个内存泄漏,但我不知道。 每次我运行一个给定的animation时,内存都会上升一点,但是不会下降。 为了确定,我做了一个testing: NSLog(@"%@", self.weakanim); // The animation collection to run HyAnimationCollection * collection = [[HyAnimationCollection alloc] init]; self.weakanim = collection; 首先这个日志nillogging,那么它总是logging一个地址。 所以这里有两个指标: 内存从9.7MB开始,每10次运行一次就增加0.1MB。 我testing了这个大约12MB。 现在,每次释放内存还是仅仅是ARC(就像JVM的垃圾收集器)只是周期性地释放内存? 也就是说,也许这不是泄漏,而是ARC还没有释放它,因为我没有达到一定的数量。 为了看看之前的animation片集是否被释放,我宣称weakanim weak ,但同样的问题仍然存在:ARC是不是还没有发布呢 ?

内存消耗增加但是泄漏未检测到泄漏时,如何处理iOS中的泄漏?

我正在开发一个iOS ARC应用程序(更多的代码可以应要求提供),而且之前我正在制作和丢弃大量的图像。 我认为我的某个地方仍然有一个图像的引用,即使我叫removeFromSuperview,并试图删除所有引用不再使用的图像。 我尝试了Leaks,Leaks报告说,随着时间的推移,内存使用量大致呈线性增长,大约从17M左右开始。 我将所有对图像的引用都replace为实例variables,因此它们将占用一个小的,有限的和固定的内存量,并且转换用于钟针的图像,而不是摆脱这些图像。 不幸的是,这导致内存使用量逐渐增加,从5M开始,而不是17M,但是另一个相同的问题,只是转化为更好的起点。 我的代码的修剪版本如下。 你能告诉我什么是泄漏(或“泄漏”,因为泄漏没有表明泄漏)关于这个,以及如何我可以保持接近代码使用时的内存边界启动? 谢谢, – (void) renderScreen { int height = floor([[UIScreen mainScreen] bounds].size.height + .4); int width = floor([[UIScreen mainScreen] bounds].size.width + .4); if (height == 2048 || height == 2008 || height == 1024 || height == 1004 || height == 984) { if (UIInterfaceOrientationIsPortrait([UIApplication sharedApplication].statusBarOrientation)) { _backgroundImage […]

在iOS应用程序中找不到遗弃的内存

我正在开发一款适用于iOS的游戏,并且在一些游戏屏幕后游戏正在终止。 我在Xcode中启动了一个工具,我意识到内存在我的屏幕之间不断增长。 ARC已启用。 我使用了标记生成function来尝试跟踪前两个屏幕之间的废弃内存,如下图所示。 GeneScreen在发射应用程序之后立即采用Generations A。 B,C和D从ChoosePlayer返回后从TitleScreen中。 这些屏幕有几个UIImageViews和通过InterfaceBuilder创build的UIButton,我删除了所有以编程方式创build的视图。 正如你所看到的似乎有很多被遗弃的内存,但我不知道如何跟踪他们,因为堆栈来自实习API调用。 我也没有任何其他视图控制器的参考。 (没有强大的循环参考)。 以下是TitleScreen视图控制器的完整代码。 我相信这肯定是一个愚蠢的错误,但我找不到。 有任何想法吗? 谢谢。 @interface SMTitleScreenViewController () @property (weak, nonatomic) IBOutlet UIButton *buttonPlay; @property (weak, nonatomic) IBOutlet UIButton *buttonCamera; @property (weak, nonatomic) IBOutlet UIImageView *titleBG1; @property (weak, nonatomic) IBOutlet UIImageView *titleBG; – (IBAction)onButtonPlay:(id)sender; – (IBAction)onButtonCamera:(id)sender; @end @implementation SMTitleScreenViewController – (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil { […]

如何在多个uiview之间滑动

刷多个UIviews的最佳解决scheme是什么? 在我的应用程序中,我有多个视图(40个视图),我想滑动之间。 用UIScrollView,我可以使用pagingEnabled,但恐怕内存爆炸! 保持低内存的诀窍是什么? 谢谢