iphone - 内存泄漏警告,由于 NSArray 的大图像

标签 iphone objective-c ipad memory-leaks crash

我有一个 iPad 应用程序,它是 child 读物。您通过调用此操作从一个页面导航到下一个页面,该操作实质上淡出当前页面并淡入下一页,然后用 NSArray 的下一行填充三个堆栈 UIImageViews,因此它准备完成该操作下一页:

-(void)delayedMethod{

    [leftButton setAlpha:1];

    [pageImageNext setAlpha:0];
    [pageImage setAlpha:1];
    [pageImageBack setAlpha:1];

    NSString *imageExtension = @".jpg";
    NSString *audioExtension = @".wav";

    if (activePage == thePages.count/3)
    {
        activePage = 1;
    }
    else 
    {
        activePage = activePage + 1;
    }

    NSInteger row = 0;
    if(activePage == 0)
    {
        row = activePage;
    }
    else
    {
        row = ((activePage) * 3);
    }   

    [leftButton setAlpha:1];

    pageImageBack.image = [UIImage imageNamed:[NSString stringWithFormat:@"%@%@", [thePages objectAtIndex:row+0], imageExtension]];
    pageImage.image = [UIImage imageNamed:[NSString stringWithFormat:@"%@%@", [thePages objectAtIndex:row+1], imageExtension]];
    pageImageNext.image = [UIImage imageNamed:[NSString stringWithFormat:@"%@%@", [thePages objectAtIndex:row+2], imageExtension]];

    [UIImageView beginAnimations:NULL context:NULL];
    [UIImageView setAnimationDuration:.5]; // you can set this to whatever you like
    /* put animations to be executed here, for example: */

    [leftButton setAlpha:0];
    [rightButton setAlpha:0];
    [leftButton setAlpha:1];
    [rightButton setAlpha:1];
    leftButton.hidden = NO;


    /* end animations to be executed */
    [UIImageView commitAnimations]; // execute the animations listed above

    [imageExtension release];


}

NSArray 在这个 Action 中被加载,在 ViewDidLoad 中被调用:
-(void)loadPages
{
    thePages = [[NSArray alloc] initWithObjects:
                   //   How many stacked images do we need to get fade in and outs? Also add column fo
                @"page0",@"page0",@"page1",
                @"page0",@"page1",@"page2",
                @"page1",@"page2",@"page3",
                @"page2",@"page3",@"page4",
                @"page3",@"page4",@"page5",
                @"page4",@"page5",@"page6",
                @"page5",@"page6",@"page7",
                @"page6",@"page7",@"page8",
                @"page7",@"page8",@"page9",
                @"page8",@"page9",@"page10",
                @"page9",@"page10",@"page11",
                @"page10",@"page11",@"page12",
                @"page11",@"page12",@"page13",
                @"page12",@"page13",@"page14",
                @"page13",@"page14",@"page15",
                @"page14",@"page15",@"page16",
                @"page15",@"page16",@"page17",
                @"page16",@"page17",@"page18",
                @"page17",@"page18",@"page19",
                @"page18",@"page19",@"page20",
                @"page19",@"page20",@"page21",
                @"page20",@"page21",@"page22",
                @"page21",@"page22",@"page23",
                @"page22",@"page23",@"page24",
                @"page23",@"page24",@"page25",
                @"page24",@"page25",@"page26",
                @"page25",@"page26",@"page27",
                @"page26",@"page27",@"page27",
                nil];

}

这一切都很好,直到第 10-12 页我开始在控制台中收到内存警告并且通常是崩溃。

我很确定这只是在正确的时间发布三个大型 UIImageViews 的问题,但我不知道什么时候......我在代码中尝试了许多不同的位置。

最佳答案

我正在做一个这样的应用程序,其中有很多用户可以更改的 ImageView 和标签。我一直收到警告和崩溃。唯一似乎可以解决这一切的事情就是让它们成为所有属性。我想在某个观点上坚持的一切,我都必须建立一个属性(property)。这很好地处理了它,否则操作系统似乎吓坏了我必须分配很多东西,并且会发送内存警告,这会释放东西,然后当应用程序尝试访问它们时它会崩溃。看看你的 pageImageNext、pageImage、pageImageBack 属性是否有效。

关于iphone - 内存泄漏警告,由于 NSArray 的大图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6308301/

相关文章:

iphone - 从 Facebook API iOS 的另一个 View Controller 调用方法

iphone - iOS - 如何使用通用 View 根据属性绘制不同的 View ?

iphone - Objective C 中两种迭代方式的区别?

ios - 在后台 IOS 7 上执行间隔输出

javascript - 如何在 ipad phonegap android eclipse 中关闭水合作用

iPad 上的 Java 网络启动

ipad - 在 iOS MobileSafari 中防止默认按下而不是默认拖动?

iphone - 当用户按下按钮显示日期选择器 View 并选择日期然后显示为按钮标题并进一步关闭日期选择器 View

ios - AWS iOS SDK 1.5.0 copyObject 因内存错误导致崩溃

c++ - Objective-C 集成 C 库并传递字符串值 - ARC 错误