2013-05-26 1 views
0

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

BTW, это приложение 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; 
// } 

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

ответ

0

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