2013-05-26 46 views
0

我從來沒有遇到過使用儀器檢測我以前的應用程序泄漏的問題,但出於某種原因,我無法在當前應用程序中檢測到任何泄漏。我甚至創建了一些泄漏只是爲了試圖讓它做些事情。我已經嘗試過我的應用程序作爲ARC和非ARC,但這不會改變任何東西。無論我做什麼,都沒有發現泄漏。xcode profiler在我的應用程序中檢測不到泄漏

順便說一句,這是一個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; 
// } 

這只是讓我瘋狂在這一點上。我必須在這裏錯過一些東西,因爲這沒有意義。任何人有任何建議?

回答

0

我終於在探查器中檢測到泄漏。我的問題是,我急於泄漏出現,我評論了我的viewController的發佈。至少我認爲就是這樣。基本上我分配一個viewController,在viewController中創建了一些泄漏,然後解散它。沒有調用release,viewController對象仍然有效(沒有dealloc調用),因此沒有泄漏。

相關問題