Этот фрагмент кода был выделен из проекта, над которым я работаю. Он последовательно воспроизводит ошибку сборки мусора на моей 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];
}
}
При воспроизведении URL-адресов в lURLArray у меня другое поведение: иногда происходит сбой, иногда сообщение об ошибке.
Сообщение об ошибке сборки мусора запускается, когда сборщик мусора освобождает одно из изображений, и выглядит так:
reference count underflow for <address>, break on auto_refcount_underflow_error to debug.
Любая помощь очень ценится,
Спасибо,
Кристоф