Профилировщик xcode не обнаруживает утечки в моем приложении

У меня никогда не было проблем с использованием инструментов для обнаружения утечек в моих предыдущих приложениях, но по какой-то причине я не могу заставить его обнаруживать утечки в моем текущем приложении. Я даже создал несколько утечек, просто чтобы попытаться заставить его что-то сделать. Я пробовал свое приложение как ARC и не-ARC, но это ничего не меняет. Что бы я ни делал, утечек не обнаружено.

Кстати, это приложение cocos3d; не то чтобы это имело значение, верно??

Я даже следовал руководству Рэя (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;
// }

Это просто сводит меня с ума в данный момент. Я должен просто что-то упустить здесь, потому что это просто не имеет смысла. У кого-нибудь есть предложения?


person Valerie    schedule 26.05.2013    source источник


Ответы (1)


Наконец-то я обнаружил утечки в профилировщике. Моя проблема заключалась в том, что в спешке, чтобы появились утечки, я закомментировал выпуск моего viewController. По крайней мере, я думаю, что это было так. В основном я выделяю viewController, создаю несколько утечек в viewController, а затем отклоняю его. Без вызова релиза объект viewController был по-прежнему действителен (не вызывался деалок) и, следовательно, не было утечек.

person Valerie    schedule 26.05.2013