代码之家  ›  专栏  ›  技术社区  ›  Doug Molineux

iPhone应用程序在设备上崩溃,但在iPhone上工作

  •  0
  • Doug Molineux  · 技术社区  · 16 年前

    我是这方面的初学者:)

    我有一个应用程序,当按下一个按钮时,它会改变一个uiImageView的图像,每个图像大约是200kb,当在模拟器中运行时,它运行正常,我可以多次改变图像,没有问题。

    当在我的设备(ipod touch)上运行时,它加载正常,它缓慢地通过大约4个图像,然后崩溃。当我使用分配性能工具运行它时,当总字节数达到2.75兆时,它就会崩溃。生活分配的数量大约是8000(这个数字高吗?).

    我的控制台读到这个

    Program received signal:  “0”.
    Data Formatters temporarily unavailable, will re-try after a 'continue'. (Unknown error loading shared library "/Developer/usr/lib/libXcodeDebuggerSupport.dylib")
    

    我还尝试过使用“泄漏”性能工具,但没有发现任何泄漏。

    my.h文件加载图像和uimageview,如下所示:

    @property(retain, nonatomic) IBOutlet UIImageView* myUIImageView;
    @property(nonatomic, retain) UIImage *image;
    

    此外,我发布这些内容如下:

    - (void)dealloc {
    [super dealloc];
    [myUIImageView release];
    [image release];
    }
    

    我也加了一句,但似乎没什么区别:

    - (void)didReceiveMemoryWarning {
        // Releases the view if it doesn't have a superview.
        [super didReceiveMemoryWarning];
        [myUIImageView release];
        [image release];
        // Release any cached data, images, etc that aren't in use.
    }
    

    我不确定在这一点上还需要尝试什么,任何调试技术建议都会受到赞赏,对于如何处理这种内存问题的任何建议都会非常有帮助, 谢谢!

    另外,很抱歉忘记添加图像更改代码:

    - (IBAction)myButton {  
    
        static NSUInteger counter = 0;
    
        counter++;
    
        if (counter == 1) {
            myUIImageView.image = [UIImage imageNamed:@"image1.jpg"]; 
        }
        else  {
            myUIImageView.image = [UIImage imageNamed:@"image2.jpg"];
                counter = 0;
        }
    }
    
    2 回复  |  直到 16 年前
        1
  •  2
  •   Josh Hinman    16 年前

    myUIImageView viewDidUnload

    - (void)viewDidUnload {
        // release retained subviews of main view
        self.myUIImageView = nil;
    }
    

    didReceiveMemoryWarning

    self.image = nil;
    

    [image release] dealloc

    image UIImageView

        2
  •  0
  •   Ben    16 年前