我有一个名为'Capture'的类,它是NSObject的子类,它还为superview添加了视图。
我添加了一个由滑块组成的Settings.bundle。当滑块值为“ON / 1”时,我将主窗口中的“捕获”视图显示为子视图。当滑块值为'OFF / 0'时,我必须删除从'Capture'添加的视图,并释放'Capture'中存在的所有对象。
当滑块值为“OFF / 0”时,我根本不想将'Capture'类创建的视图隐藏到主视图上。
当应用程序发送到后台而不是应用程序终止时,我想释放'Capture',因此我无法使用通知UIApplicationWillTerminateNotification来取消单个单例。
如果我只是隐藏'Capture'显示的视图,那么“Capture”类将不必要地使用内存
所以现在我如何解除单身人士的攻击。</ p>
'Capture'类视图将位于每个视图控制器之上,即使事件发生也是如此。 它通过在AppDelegate中调用的类方法分配一次。
以这种方式创建单身:
static ScreenCapture *sharedScreen = nil;
+(Capture *)sharedScreenCapture
{
if (!sharedScreen)
{
sharedScreen = [[Capture alloc] init];
}
return sharedScreen;
}
答案 0 :(得分:3)
为什么不创建一些ReLoad
方法来清除所有现金并使私有变量无效?
这样的事情:
+(void) reLoad {
@synchronized(self) {
// clear all the cashes...
sharedScreen = nil;
}
}
并在收到UIApplicationWillTerminateNotification
[ScreenCapture reLoad];
答案 1 :(得分:2)
您可以添加其他方法:
+ (void)destroyScreenCapture
{
sharedScreen = nil;
}
考虑单例是否实际上是您使用的正确模式,如果您确实需要销毁单例,或者您是否应该“清理”它以释放当前未使用的数据的所有内存。