是否需要保存对单例objective-c 对象的引用才能在IOS 应用程序的整个生命周期中保留它?

Posted

技术标签:

【中文标题】是否需要保存对单例objective-c 对象的引用才能在IOS 应用程序的整个生命周期中保留它?【英文标题】:does something need to hold a reference to a singleton objective-c object in order to preserve it through the life of an IOS app? 【发布时间】:2011-10-19 01:11:21 【问题描述】:

为了在 ios 应用程序的整个生命周期中保留它,是否需要保存对单例 Objective-c 对象的引用?

例如,如果 AppDelegate 您创建/实例化了一个单例对象但没有保留它,那么这个实例(带有实例变量数据)以后是否可以在 iPhone 应用程序中使用?

换句话说,为了确保单例中的数据保持完整,在最初创建它的 App Delegate 中,App Delegate 是否需要将其保留到它的实例变量之一?

【问题讨论】:

【参考方案1】:

任何类都不需要保留指向单例类的指针。单例类本身保存一个指向其实例的指针。基本上,当用户想要使用单例时,他们会通过类方法请求它(按照惯例,通常以shared 开头)。此方法将检查单例是否已初始化。如果没有,它将执行初始化。如果内存中已经存在一个实例,它只会返回它。通常,单例对象将在应用程序的整个生命周期中都存在于内存中。

关键是,如果您为其中一个属性设置了一个值,那么,是的,它应该可以在程序的另一部分访问。不,应用程序委托不需要保留指向单例的指针。

【讨论】:

【参考方案2】:

只要你不自动释放分配的实例,就不会。

显式分配需要释放对象才能释放。所以如果你只是分配实例,对象将留在内存中。

【讨论】:

以上是关于是否需要保存对单例objective-c 对象的引用才能在IOS 应用程序的整个生命周期中保留它?的主要内容,如果未能解决你的问题,请参考以下文章

个人对单例模式的理解

java单例模式

面试官:说说对单例模式的理解,最后的枚举实现我居然不知

手写单例模式

深入单例模式 - Java实现

你真的会写单例模式吗