垃圾收集崩溃使用NSImage

时间:2009-06-01 22:22:04

标签: objective-c cocoa garbage-collection

这段代码与我正在处理的项目分开。它始终在Mac OS 10.5.7上重现垃圾回收错误,有时会崩溃。我一直在看这个问题太久了,所以我的问题是:有没有人知道为什么这会在垃圾收集开启时出错?

- (void) doCrash: (id) sender
{
    NSArray *lURLArray = [ NSArray arrayWithObjects:
                          @"http://userserve-ak.last.fm/serve/300x300/23621007.jpg",
                          @"http://userserve-ak.last.fm/serve/300x300/26675609.png",
                          @"http://userserve-ak.last.fm/serve/300x300/26675609.png",
                          nil ];
    NSString *lImageURL = nil;
    for (lImageURL in lURLArray)
    {
        NSImage *lImage = [[NSImage alloc] initWithContentsOfURL: [NSURL URLWithString: lImageURL]];

        NSSize targetSize = NSMakeSize(80,80);
        NSImage *newImage = [[NSImage alloc] initWithSize:targetSize];
        [newImage lockFocus];

        NSRect thumbnailRect = NSMakeRect(0,0,80,80);
        NSRect sourceRect = NSMakeRect(0,0,[lImage size].width,[lImage size].height);

        [lImage drawInRect: thumbnailRect
                  fromRect: sourceRect
                 operation: NSCompositeSourceOver
                  fraction: 1.0];                

        [newImage unlockFocus];
    }
}

在使用lURLArray中的URL时,我会遇到不同的行为:有时会崩溃,有时会出现错误消息。

当垃圾收集器释放其中一个映像时会触发垃圾收集错误消息,如下所示:

reference count underflow for <address>, break on auto_refcount_underflow_error to debug.

非常感谢任何帮助, 谢谢, 克里斯托夫

1 个答案:

答案 0 :(得分:2)

Apple已经向我确认这是OX X 10.5.7中的一个错误。

rdar://问题/ 6938657