3

我创建了一个带有主视图的信息亭应用程序和一个带有图像轮播的模式视图作为屏幕保护程序。每当触摸屏幕时,此模态视图就会向下滑动。

如果设备在应用程序运行的情况下长时间(一夜之间)单独放置,当屏幕保护模式动画消失时,屏幕会出现重绘问题。看起来操作系统在主屏幕的背景图像所在的位置没有任何东西可以绘制。主屏幕上的控件和文本按应有的方式绘制,只有背景图像被模态隐藏动画的伪影替换。这发生在两台设备(iPad 2 3G 16GB)上。这只发生在应用程序运行了很长时间的情况下,屏幕是否打开并不重要。有问题的背景 UIImageView 是一个普通的 UIImageView,除了“图像”之外没有任何属性发生变化。

它看起来像这样(客户端徽标和一些文字模糊):http ://tinypic.com/view.php?pic=2qx47bt&s=6

关于什么可能是错误的以及如何解决它的任何想法?

编辑:这是隐藏屏幕保护程序的代码。非常标准,没有恶作剧。

- (void)hideScreenSaver {
    dispatch_async(dispatch_get_main_queue(), ^{
        if (![[[self mainViewController] presentedViewController] isKindOfClass:[UINavigationController class]]) {
            [[self mainViewController] dismissModalViewControllerAnimated:TRUE];
        }
    });
}

屏幕保护程序视图控制器是在 - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions 中创建的(在主线程中)

[[GMAppManager sharedManager] setScreenSaverViewController:[[AAScreenSaverViewController alloc] initWithNibName:@"AAScreenSaverViewController" bundle:nil]];
4

2 回答 2

2

当你说

有问题的背景 UIImageView 是一个普通的 UIImageView,除了“图像”之外没有任何属性发生变化。

你能确保你UIImageView先清除它,然后再更改Image

我相信你一定知道。但是,以防万一,您可以尝试一下吗:

youeImageView.image = nil然后设置其他图像?

通过查看您提供的图像,恕我直言,原因似乎不是别的。

于 2013-04-12T05:47:59.797 回答
2

`我绝对遇到过这个问题,因为它只是 uikit 资源的泄漏。运行构建并分析和修复泄漏。还要在所有的 dealloc 上设置断点,并确保它们被调用。如果即使对类的一部分的单个引用被保留而不被释放,也不会调用 dealloc。还要检查您传递参数的所有对象:self。如果使用 self 的对象未释放,这些对 self 的引用也将阻止 dealloc。如果循环很紧,自动释放池将不会耗尽。尝试使用显式发布。委托需要分配而不是保留。

发布更多错误和问题,我来看看。你有一个很酷的项目。

于 2013-04-12T05:08:21.120 回答