小编use*_*253的帖子

ios设备上图像的内存管理性能不佳

我有以下问题:

我有一个主视图对象(继承自UIView),它以4x4布局显示一个包含16个正方形的网格(每个是我创建的继承自UIImageView的类).

这16个正方形中的每一个都是160x160,并且包含不大于30kb的图像(每个正方形的不同图像).但是,图像是500x500(因为它在程序的其他地方以其全尺寸使用),因此通过setFrame方法将其在"square"类中调整为160x160.

通过在应用程序运行时查看Xcode的内存管理功能,我注意到了一些事情:

  1. 这些方块中的每一个在添加到主视图对象时,会将应用程序的内存使用量增加1MB.这不会在实例化时发生,但只有在主视图对象的[self addSubview:square]添加它们时才会发生.
  2. 如果我对所有方块使用相同的图像,则内存增加最小.如果我在没有任何图像的情况下初始化方形对象,则增加基本上为零.
  3. 相同的应用程序,当在模拟器中运行时,使用它在实际设备上执行的内存的1/6.

这里的重点是:为什么每个正方形在加载30kb图像时占用1MB内存?有没有办法减少这个?我已经尝试了一些不同的方式创建图像:[UIImage imageNamed:img],[UIImage imageWithContentsFromFile:path],[UIImage imageWithData:imgData scale:scale],以及未调整的框架.

memory-management uiimageview uiimage addsubview ios

4
推荐指数
1
解决办法
1369
查看次数

UIView animateWithDuration:delay:options:animate:completion not delaying

我在SO看到了一些与此相关的问题,但是他们似乎都没有回答这个问题:这delay部分内容UIView animateWithDuration:delay:options:animate:completion:不会延迟.以下是调用它的实际代码:

-(void) viewDidAppear:(BOOL)animated
{
    NSLog(@"about to start animateWithDuration...");

    [UIView animateWithDuration:3.0 delay:2.0 options:UIViewAnimationOptionTransitionNone
                     animations:^{NSLog(@"in the animations block..."); self.textView.hidden = YES;}
                     completion:^(BOOL finished){if (finished) {NSLog(@"In the completion block..."); self.textView.hidden = NO; [self.player play];}}];
}
Run Code Online (Sandbox Code Playgroud)

这是NSLog时间戳:

2013-06-18 15:27:16.607 AppTest1 [52083:c07]即将启动animateWithDuration ...

2013-06-18 15:27:16.608动画块中的AppTest1 [52083:c07] ...

2013-06-18 15:27:16.609 AppTest1 [52083:c07]在完成块中......

可以看出,指令的执行间隔为毫秒,而不是延迟2或3秒.有谁知道这个的原因?

objective-c uiview uiviewanimation ios

1
推荐指数
1
解决办法
872
查看次数