- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
在单例上使用 retain
有什么意义吗?我相信使用单例模式的全部目的是保持一个全局对象可以从不同的类访问。在这样的对象上使用 retain
会是什么情况?
通常,单例类中 retain
的实现会返回 self
(不是单例实例),如下所示:
-(id)retain
{
return self;
}
最近翻了一些开源代码,作者反复保留了单例
object = [[SingletonClass shareObject] retain]
并在dealloc
中释放它。
因此,当我尝试构建这个项目时,它首先工作,然后在稍后尝试访问单例对象上的变量时崩溃。
如果我保留一个单例对象并尝试访问它,到底会发生什么?
最佳答案
仅仅因为它是单例并不意味着它的生命周期一定是进程的生命周期。例如,您可能有一些获取资源的单例。但在您需要该资源之前,创建它是没有意义的。同样,您可能知道所有实例都是使用该资源完成的,那么为什么要保留它呢?跟踪单例是否需要继续存在的一个简单方法是其保留计数。
例如,您可能有一个代表用户设备内置摄像机的单例。您的应用程序的不同部分可能需要访问相机。但也可以在没有相机的情况下使用您的应用程序,或者工作流程可能会要求相机在某个时刻关闭(出于隐私或其他原因)。因此,在用户启动开始使用相机的操作之前,您不会分配单例。他们可能会使用相机执行多项操作,例如拍照、扫描二维码、录制视频等。然后他们可能会结束所有这些操作并需要释放相机占用的内存(尤其是在移动设备上) )。所以他们结束了这些行动。如果每个与相机相关的操作都保留相机单例,然后每个操作完成后都将其释放,那么您可以释放相机使用的内存和其他资源,即使它仍然是单例。
关于objective-c - 保留您访问过的单例有什么意义?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18863992/
我最近购买了《C 编程语言》并尝试了 Ex 1-8这是代码 #include #include #include /* * */ int main() { int nl,nt,nb;
早上好!我有一个变量“var”,可能为 0。我检查该变量是否为空,如果不是,我将该变量保存在 php session 中,然后调用另一个页面。在这个新页面中,我检查我创建的 session 是否为空,
我正在努力完成 Learn Python the Hard Way ex.25,但我无法理解某些事情。这是脚本: def break_words(stuff): """this functio
我是一名优秀的程序员,十分优秀!