Утечки памяти в main.m при профилировании в инструментах?

В одном из моих приложений я получаю утечку памяти в UIKit,UIFoundation и QuartzCore. Когда я иду на дерево вызовов, это показывает утечку в main.m, Я действительно понятия не имел, почему это происходит. Вы можете увидеть скриншоты утечки памяти ниже.введите описание изображения здесь

В дереве вызовов

введите описание изображения здесь

Как устранить эту утечку?

КОД УТЕЧКИ ПАМЯТИ

- (void) showCustomPrices
{

int priceValue = 0;
NSArray* priceSplitValue = [btnpriceButton.titleLabel.text componentsSeparatedByString: @"."];
NSString* priceFinal = [priceSplitValue objectAtIndex:0];

for(int i=0;i<[priceArray count];i++)
{ 
    if([[priceArray objectAtIndex:i] isEqualToString:priceFinal]){
        priceValue = i; 
    }
}


    //Assign the cocktail to picker view
    priceActionsheet = [[UIActionSheet alloc] initWithTitle:nil
                                              delegate:self
                                     cancelButtonTitle:nil
                                destructiveButtonTitle:nil
                                     otherButtonTitles:nil];//as we want to display a subview we won't be using the default buttons but rather we're need to create a toolbar to display the buttons on

    [priceActionsheet setActionSheetStyle:UIActionSheetStyleBlackTranslucent];

    CGRect pickerFrame = CGRectMake(0, 40, 0, 0);

    pricePickerview = [[UIPickerView alloc] initWithFrame:pickerFrame];
    pricePickerview.showsSelectionIndicator = YES;
    pricePickerview.dataSource = self;
    pricePickerview.delegate = self;


    [priceActionsheet addSubview:pricePickerview];
    //[pickerView release];

    priceToolbar = [[UIToolbar alloc] initWithFrame:CGRectMake(0, 0, 485, 44)];
    priceToolbar.barStyle = UIBarStyleBlackTranslucent;
    [priceToolbar sizeToFit];

    NSMutableArray *barItems = [[NSMutableArray alloc] init];

    UIBarButtonItem *flexSpace = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemFlexibleSpace target:self action:nil];
    [barItems addObject:flexSpace];

    UIBarButtonItem *doneBtn = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemDone target:self action:@selector(doneButtonPressed:)];
    [barItems addObject:doneBtn];

    UIBarButtonItem *cancelBtn = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemCancel target:self action:@selector(cancelButtonPressed:)];
    [barItems addObject:cancelBtn];

    [pricePickerview selectRow:priceValue inComponent:0 animated:YES];//Memory leaks shows 100% here

    [priceToolbar setItems:barItems animated:YES];

    [priceActionsheet addSubview:priceToolbar];

    [priceActionsheet addSubview:pricePickerview];

    [priceActionsheet showInView:self.view];  

    [priceActionsheet setBounds:CGRectMake(0, 0, 485, 320)];

}

Буду признателен за любую оказанную помощь.

4 ответа

Решение

Наконец я решил свою проблему, переместив вид сборщика allocation/initialisationчасть из метода showCustomePrices в viewwillAppear, Который работает потрясающе без каких-либо утечек памяти.

То, что произошло раньше, это всякий раз, когда я нажимаю кнопку pickerview с распределением памяти. Вот почему произошла утечка памяти.

Теперь после переезда в viewwillAppear это просто размещение в первый раз, когда представление загружается. Затем доступ к Picker View осуществляется без выделения памяти. Так утечки памяти удаляются.

Если ваш проект не ARC, это может быть потому, что вы оставили [super dealloc]; где-то подклассы базовых классов. У меня была та же проблема с подклассом NSObject, Я забыл написать [super dealloc]; и получал кое-какие похожие утечки.

NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init];
    int retVal = UIApplicationMain(argc, argv, nil, nil);
    [pool release];
    return retVal;

попробуйте это в вашем main.m

int main(int argc, char *argv[])
{
    NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
    int retVal = UIApplicationMain(argc, argv, @"yourAppName", nil);
    [pool release];
    return retVal;
}
Другие вопросы по тегам