我从来没有遇到过使用仪器检测我以前的应用程序中的泄漏的问题,但由于某种原因,我无法用它来检测我当前应用程序中的任何泄漏。我什至创建了一些泄漏只是为了让它做一些事情。我已经将我的应用程序尝试为 ARC 和非 ARC,但这并没有改变任何东西。无论我做什么,都没有检测到泄漏。
顺便说一句,这是一个 cocos3d 应用程序;不是说这很重要吗?
我已经遵循 Ray 的教程 ( http://www.raywenderlich.com/23037/how-to-use-instruments-in-xcode ),在测试示例代码时,确实会导致检测到泄漏. 我将有问题的代码复制到我的应用程序中,然后用模拟器和设备再次尝试,但仍然没有。这是我用来尝试创建泄漏的代码:
- (IBAction)rotateTapped:(id)sender {
NSLog(@"settingsButtonPushed");
UIImage *currentImage = _imageView.image;
CGImageRef currentCGImage = currentImage.CGImage;
CGSize originalSize = currentImage.size;
CGSize rotatedSize = CGSizeMake(originalSize.height, originalSize.width);
CGContextRef context = CGBitmapContextCreate(NULL,
rotatedSize.width,
rotatedSize.height,
CGImageGetBitsPerComponent(currentCGImage),
CGImageGetBitsPerPixel(currentCGImage) * rotatedSize.width,
CGImageGetColorSpace(currentCGImage),
CGImageGetBitmapInfo(currentCGImage));
CGContextTranslateCTM(context, rotatedSize.width, 0.0f);
CGContextRotateCTM(context, M_PI_2);
CGContextDrawImage(context, (CGRect){.origin=CGPointZero, .size=originalSize}, currentCGImage);
CGImageRef newCGImage = CGBitmapContextCreateImage(context);
UIImage *newImage = [UIImage imageWithCGImage:newCGImage];
self.imageView.image = newImage;
}
这是我试图故意制造泄漏的一些代码(多次调用):
// if (! self.robotViewController) {
robotViewController = [[RobotViewController alloc] initWithNibName:@"RobotViewController" bundle:nil];
self.robotViewController.glView = self.m_glView;
self.robotViewController.delegate = self;
// }
在这一点上,这简直让我发疯。我必须在这里遗漏一些东西,因为这没有任何意义。有人有什么建议吗?