内存泄漏代码行 [英] Memory Leak In line of code

查看:66
本文介绍了内存泄漏代码行的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我的应用程序工作正常,但是当我运行仪器检查泄漏时,它显示我在这行代码中泄漏,紫色带有100.0%标记:

My app is working fine, but when I run instrument for checking for leaks, it shows me a leak at this line of code, in purple with a 100.0% mark:

xmlParser = [[NSXMLParser alloc] initWithContentsOfURL:url];

以下是包含此行的方法:

Here's the method containing this line:

-(NSString*) languageSelectedStringForKey:(NSString*) key
{
    NSString *path = [[NSBundle mainBundle] pathForResource:@"zh" ofType:@"lproj"];

    if(selectedLanguage==French)
    {
        FinalString = [[NSString alloc] initWithFormat:@"http://www.xyz.com/api_com.php?page_id=%d",IDValue];
        url = [[NSURL alloc] initWithString:FinalString];
    }
    else if(selectedLanguage==German)
    {
        FinalString = [[NSString alloc] initWithFormat:@"http://www.x.com/api_com.php?page_id=%d",IDValue];
        url = [[NSURL alloc] initWithString:FinalString];
    }
    else if(selectedLanguage==Nepali)
    {
        FinalString = [[NSString alloc] initWithFormat:@"http://www.xy.com/api_com.php?page_id=%d",IDValue];
        url = [[NSURL alloc] initWithString:FinalString];
    }
    xmlParser = [[NSXMLParser alloc] initWithContentsOfURL:url];
    [url release];

    //Initialize the delegate.
    parser = [[NewsParser alloc] initXMLParser];
    //Set delegate
    [xmlParser setDelegate:parser];

    //Start parsing the XML file.
    BOOL success = [xmlParser parse];
    if(success)
        NSLog(@"No Errors");
    else
        NSLog(@"Error Error Error!!!");

    NSBundle* languageBundle = [NSBundle bundleWithPath:path];
    NSString* str=[languageBundle localizedStringForKey:key value:@"" table:nil];
    return str;
}

这是我的 ViewDidLoad 调用 languageSelectedStringForKey 的方法。

- (void)viewDidLoad
{
    // Do any additional setup after loading the view from its nib.
    appDelegate = (ProgAppDelegate *)[[UIApplication sharedApplication] delegate];
    IDValue = 1;
    textLabel.text=[self languageSelectedStringForKey:@"Welcome to Advance Localization"];
    [super viewDidLoad];
}

导致此泄漏的原因是什么,以及如何解决?

What is causing this leak, and how can I fix it?

这是dealloc方法: -

this is dealloc method:-

- (void)dealloc
{

    [xmlParser release];
    [parser release];
    [nibLoadedCell release];

    [super dealloc];
}


推荐答案

你有没有打电话

[xmlParser release];

如果没有,你应该当你不再需要它时释放它。也许在该行出现的同一类的dealloc方法中。

If not, you should release it when you no longer need it. Perhaps in the dealloc method of the same class in which that line appears.

这篇关于内存泄漏代码行的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆