【发布时间】:2009-09-29 20:42:24
【问题描述】:
我正在追踪一个奇怪的错误。该错误通过在控制台日志中显示此消息来表现出来:
BlurApp(5018,0xa00d6500) malloc: *** error for object 0x103b000: pointer being freed was not allocated
执行离开我的事件循环后会弹出此消息。它似乎在自动释放池被耗尽时发生。这是似乎触发错误的代码:
- (UIImage*)imageWithImage:(UIImage*)image
scaledToSize:(CGSize)newSize;
{
UIGraphicsBeginImageContext( newSize );
[image drawInRect:CGRectMake(0, 0, newSize.width, newSize.height)];
UIImage* newImage = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
return newImage;
}
我这样调用 imageWithImage:
UIImage* theImage = [self imageWithImage:origImage scaledToSize:rect.size];
theImage 在调用例程中使用,然后我假设 autorelease 会处理它。
如果我将return newImage; 更改为返回[newImage retain];,则看不到错误消息。
现在,这很奇怪。此错误仅发生在某些大小的 newSize 中。具体来说,当 newSize 的高度和宽度等于 55 到 176 范围内的任何数字(不包括 56、110、112、114)时,它总是会发生,而不是在 5 到 300 之间的其他高度和宽度值。(高度和宽度是所有测试总是相等的)
我可以用新的眼光来看待这个...谢谢!
【问题讨论】:
-
这似乎是 Simulator 3.0 SDK 中的一个错误。我在模拟器的 SDK 3.1 中看不到这些错误消息,在 iPhone 上也看不到错误消息。
标签: iphone core-graphics release