外部自动释放池



我不明白为什么我们需要外部自动释放池(大约 UIApplicationMain 和内部NSApplicationMain)。无论如何,当进程终止时,不会释放所有分配的内存吗?

例如,如果我只是这样做怎么办:

@import Foundation;
int main(int argc, const char *argv[]) {
    for (NSUInteger i = 0; i < NSUIntegerMax; i++) {
        NSArray *anArray = [NSArray array];
    }
    return EXIT_SUCCESS;
}

这是一个框架不变的。框架依赖于自动发布池的存在。如果没有自动发布池,程序会将垃圾邮件错误发送到日志中。程序仍然可能运行,并且内存仍将在退出时释放,但框架仍然希望有一个池供它调用。

你是对的,当进程退出时,所有内存都会被释放。但自动释放池的要点是在此之前释放内存。(在你的例子中,你正在"放弃"内存 - 分配然后忘记分配。否则,您只会泄漏内存,直到系统无法为进程分配更多内存,在这种情况下,进程将被终止。

最新更新