【问题标题】:Calling UIGetScreenImage() on manually-spawned thread prints "_NSAutoreleaseNoPool():" message to log在手动生成的线程上调用 UIGetScreenImage() 会打印“_NSAutoreleaseNoPool():”消息以记录
【发布时间】:2011-02-15 02:25:00
【问题描述】:
这是NSThread +detachNewThreadSelector:(SEL)aSelector toTarget:(id)aTarget withObject:(id)anArgument中指定的选择器主体
NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
同时(做)
{
如果 (doItForSure)
{
NSLog(@"检查");
doItForSure = 否;
(void)gettimeofday(&start, NULL);
/*
做一些事情*/
// 下一行打印“_NSAutoreleaseNoPool():”消息到日志
CGImageRef screenImage = UIGetScreenImage();
/*
做一些其他的事情*/
(void)gettimeofday(&end, NULL);
已用 = ((double)(end.tv_sec) + (double)(end.tv_usec) / 1000000) - ((double)(start.tv_sec) + (double)(start.tv_usec) / 1000000);
NSLog(@"经过的时间:%e", elapsed);
[池排水];
}
}
[池释放];
即使存在自动释放池,当我调用 UIGetScreenImage() 时,我也会将此打印到日志中:
2010-05-03 11:39:04.588 ProjectName[763:5903] *** _NSAutoreleaseNoPool(): NSCFNumber 类的对象 0x15a2e0 自动释放,没有适当的池 - 只是泄漏
有没有其他人在单独的线程上看到 UIGetScreenImage() 的这个?
【问题讨论】:
标签:
iphone
screen-scraping
nsthread
nsautoreleasepool