iphone - 关于释放分配的内存的简单问题

标签 iphone memory memory-leaks

在几个示例代码中可以找到这一点

static NSNumberFormatter *numberFormatter = nil;
if (numberFormatter == nil) {
    numberFormatter = [[NSNumberFormatter alloc] init];
    [numberFormatter setNumberStyle:NSNumberFormatterDecimalStyle];
    [numberFormatter setMaximumFractionDigits:6];
}

该代码不会产生内存泄漏吗?或者是否有一些内置的魔法可以释放分配的内存?

问候

最佳答案

在我看来,这段代码来自实现“单例模式”或与之非常相似的东西的地方。 由于变量是静态,因此它的值将在函数调用之间被记住。这意味着它在应用程序的生命周期中仅分配一次

在此代码中,numberFormatter 变量似乎是应用程序在其整个生命周期内随时需要的东西 - 因此无需释放它。
更准确地说,如果应用程序经常需要它,则释放它可能是不切实际的。这会导致不必要的内存分配和释放操作。

请注意,在应用程序不再运行后,属于您的应用程序的所有内存都会被操作系统释放
这样,分配给该变量的内存也将被释放。

如果该对象使用内存以外的资源,则需要显式清理,但如果没有,则不需要。

关于iphone - 关于释放分配的内存的简单问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3382433/

相关文章:

iPhone4如何添加/动画UIView以显示在UIButton下?

c - 如何使用简单的指针算术访问结构体的属性?

c++ - 当我尝试对使用 New 函数启动的对象调用 delete 函数时,为什么会出现范围错误?

c++ - 有没有办法让一组未初始化的类在调用 delete[] 时不会被破坏?

objective-c - iPhone:以编程方式将选项卡栏 Controller 添加到导航 Controller

objective-c - 如何在 UIWebVIew 中显示文本

javascript - 在 iPhone 4/4s (iOS 7.0.1) 上放大文本输入字段时崩溃 Safari(并且仅在缩放时)

c++ - 在不使用内核的情况下写入 CUDA 中的共享内存

pointers - 为什么在 Rust 中修改字符串变量时指针地址没有改变?

C# 收集内存泄漏对象的垃圾