当前位置:  开发笔记 > IOS > 正文

使用Instruments Leaks&Object Alloc:自动释放的对象是否被视为泄漏?

如何解决《使用InstrumentsLeaks&ObjectAlloc:自动释放的对象是否被视为泄漏?》经验,为你挑选了0个好方法。

我有一个iPhone应用程序正在获取内存警告,所以我试图在仪器的帮助下找到泄漏,更有效地使用内存等.除此之外,我正在尝试取出任何自动释放的对象并替换为手动alloc/init/release对象.但是,某些API调用似乎没有"init"版本(请参阅下面的代码).我承认有一些基本的误解:

    如果我'调用'API并返回基本上自动释放的对象,那么这些对象是否会在仪器中显示为泄漏?我似乎在仪器中看到了这种行为.

    如果是2,我应该忽略,如果没有"非自动释放"替代方案,我正在使用我需要的API吗?此外,如果这个代码被调用很多,我应该完全重新考虑algor吗?

这是我的应用程序中的一些实用程序代码,它被调用很多.基本上确定两个日期是否有意义"相等".我已经留下了注释掉的代码,这样你就可以看到我在我的代码库中要进行的改进类型 - 我开始手动创建NSDate(和发布)时,这个DID减少了随后在Instruments中运行时的内存泄漏帮助.但是,我仍然有我相信泄漏的日期组件对象...但它是一个API调用(对于代码格式化很抱歉,但我似乎无法在SO上改进它):

+ (BOOL)isDayEqualToDay:(NSDate*)date anotherDate:(NSDate*)anotherDate
{

    NSCalendar *cal = [[NSCalendar alloc] initWithCalendarIdentifier:NSGregorianCalendar];  
    //NSCalendar *cal;  
    NSDateComponents *componentsFromDate, *componentsFromAnotherDate;   
    NSUInteger unitFlags = NSYearCalendarUnit | NSMonthCalendarUnit | NSDayCalendarUnit;    
    //cal = [NSCalendar currentCalendar];
    componentsFromDate = [cal components:unitFlags fromDate:date];
    componentsFromAnotherDate = [cal components:unitFlags fromDate:anotherDate];

    BOOL bDatesEqual = ([componentsFromDate year] == [componentsFromAnotherDate year] && 
                        [componentsFromDate month] == [componentsFromAnotherDate month] && 
                        [componentsFromDate day] == [componentsFromAnotherDate day]);

    [cal release];

    return bDatesEqual;

    /*
    return (
        [componentsFromDate year] == [componentsFromAnotherDate year] &&
        [componentsFromDate month] == [componentsFromAnotherDate month] && 
        [componentsFromDate day] == [componentsFromAnotherDate day]
    );*/
}

我认为componentsFromDate和componentsFromAnotherDate显示为泄漏,但实际上只有从NSData API调用(自动释放)返回的对象.不知道我还能做些什么来提高效率,而且我质疑我对如何最好地使用乐器的理解.建议?

推荐阅读
N个小灰流_701
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有