objective-c - 什么是tiny_free_list_add_ptr?

标签 objective-c cocoa memory

我已经广泛搜索了它的含义。我的猜测是我不知何故有一个损坏的堆栈。我明白了

微小_空闲_列表_添加_ptr

在第 16 次调用时显示:

NSDateFormatter *theFormatter = [[NSDateFormatter alloc] init];

问题的原因是什么?我认为我的堆栈已损坏,这是正确的吗?

    - (NSString *)formatDate:(NSString *)uglyDate withFormat:(NSString *)theFormat {

    NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
    NSDateFormatter *theFormatter = [[NSDateFormatter alloc] init];
    [theFormatter setDateFormat:theFormat];

    NSDate *realDateUgly = [NSDate dateWithNaturalLanguageString:uglyDate];
    if (realDateUgly == nil)
        realDateUgly = [NSDate dateWithString:uglyDate];

    NSString *prettyDate = [[NSString alloc] initWithString:[theFormatter stringFromDate:realDateUgly]];

    [pool drain];
    [pool release];    
    [theFormatter release];
    return prettyDate;

}

最佳答案

  1. 我怀疑你这里需要一个游泳池。
  2. 您过度释放了池。 drain 与非 GC 代码中的 release 相同。 (release 在 GC 代码中同样是多余的,因为这样它就没有操作了。)
  3. 您正在泄露 prettyDate。你应该自动释放它。 (当然,这不适用于它周围的池,这是杀死该池的一个很好的理由。)

查看 Memory Management Programming Guide for Cocoa 后并解决您的内存管理问题,您应该会发现问题已解决,或者至少能够更好地追踪它。

如果修复内存管理后问题仍然存在,请编辑您的问题以包含完整的堆栈跟踪。

关于objective-c - 什么是tiny_free_list_add_ptr?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1140947/

相关文章:

iphone - 从 modalViewController 中调用父类中的方法

objective-c - 层支持的 NSControl 仍然调用 NSCell 绘图例程

objective-c - 我可以查看Objective-C中appendFormat实例方法的实现吗?

c - 函数、函数参数和本地堆栈在内存中是如何物理组织的?

python - 在 python : About several instances with same name at the same time 中使用池进行多处理

objective-c - 什么是 Objective-C 中的 dealloc

ios - 每5个单元格更改一次单元格背景

c# - 为什么要使用小于 32 位的整数?

ios - 当我给UIImageView动画时,为什么UIImage引用会更改?

swift - 试图找到一种更简单的方法来自动反转 .on 和 off。快速状态