objective-c - 为什么 Objective-C 对象在释放后仍然存在?

标签 objective-c memory-management memory-leaks

我这里有这个代码...

#import <Foundation/Foundation.h>
#import "Chip.h"

int main (int argc, const char * argv[]) {
    NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init];

    Chip *chip = [[Chip alloc] init];

    [chip release]; //Chip should be gone

    NSLog(@"%@", chip);

    [pool drain];
    return 0;
}

为什么芯片发布后打印出来还是给我描述。此时不应该将其删除吗?

最佳答案

芯片不见了。你只是在和它的幽灵说话。

添加一个dealloc覆盖来记录调用。您应该看到释放按预期发生。该对象被释放,但没有发生任何其他事情来破坏内存,并且您的调用恰好没有侵入会导致麻烦的地方。

关于objective-c - 为什么 Objective-C 对象在释放后仍然存在?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4819451/

相关文章:

java - 递归与内存

c - 如果malloc返回NULL怎么办?

android - Android中fillwindow()中的无效语句

ios - Mapkit 和 userTrackingMode

objective-c - TableView Controller 和 ModalView 中的 TextField

objective-c - 如何在 Objective-C Xcode 包中的每个单元测试之前实现 setup() 和teardown()?

objective-c - NSKeyedUnarchiver 内存泄漏

ios - 字符串值未转换为日期格式

iphone - 清除 MKMapView 的图 block 缓存吗?

c++ - 单例:是否存在内存泄漏?