NSXMLParser (iPhone) 中的内存问题

发布于 2024-10-20 15:29:56 字数 1043 浏览 1 评论 0原文

您好,我正在尝试解析 xml 并使用代码中的 currentElementValue 来获取过期日期。这是代码。

if([elementName isEqualToString:@"utlop"]) {
    NSDate *now = [NSDate dateWithTimeIntervalSinceNow:0];
    NSDateFormatter *dateFormat = [[NSDateFormatter alloc] init];
    [dateFormat setDateStyle:NSDateFormatterShortStyle];
    int numberOfDays = [currentElementValue intValue];
    NSDate *expireDate = [now addTimeInterval:60*60*24*numberOfDays];
    NSString *expireString = [dateFormat stringFromDate:expireDate];
    NSLog(@"ExpiryString :%@", expireString);



    //Add values to Vare
    enVare.utlop = expireString;
    enVare.enhet = enhet;
    enVare.isDirty = NO;

    //Add Vare
    [appDelegate addVare:enVare];


    //Releasing
    [dateFormat release];
    [enVare release];
    enVare = nil;
    [currentElementValue release];
    currentElementValue = nil;
    [expireString release];
    expireString = nil;

这会导致内存泄漏,但我对 Objective C 很陌生,所以我找不到错误。当我这样做时,它会起作用:

 enVare.utlop = currentElementValue;

Hi I'm trying to parse an xml and use the currentElementValue inside a code to get an expiredate. This is the code.

if([elementName isEqualToString:@"utlop"]) {
    NSDate *now = [NSDate dateWithTimeIntervalSinceNow:0];
    NSDateFormatter *dateFormat = [[NSDateFormatter alloc] init];
    [dateFormat setDateStyle:NSDateFormatterShortStyle];
    int numberOfDays = [currentElementValue intValue];
    NSDate *expireDate = [now addTimeInterval:60*60*24*numberOfDays];
    NSString *expireString = [dateFormat stringFromDate:expireDate];
    NSLog(@"ExpiryString :%@", expireString);



    //Add values to Vare
    enVare.utlop = expireString;
    enVare.enhet = enhet;
    enVare.isDirty = NO;

    //Add Vare
    [appDelegate addVare:enVare];


    //Releasing
    [dateFormat release];
    [enVare release];
    enVare = nil;
    [currentElementValue release];
    currentElementValue = nil;
    [expireString release];
    expireString = nil;

This results in a memory leak, but Im new to objective C so I can't find the error. When I just do this, it works:

 enVare.utlop = currentElementValue;

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

烈酒灼喉 2024-10-27 15:29:56

不要释放不属于您的对象。当您使用 new 或 alloc 创建对象时,您就拥有了一个对象。仅释放您使用这些函数创建的那些对象。还要确保在使用完这些对象后释放它们。

Do not release objects that are not owned by you. You own an object when u create them using new or alloc. Release only those objects that are created by you using these functions. Also make sure that you release such objects once you have finished using them.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文