是否需要保存对单例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 应用程序的整个生命周期中保留它?的主要内容,如果未能解决你的问题,请参考以下文章