我有一个名为“ Capture”的类,它是NSObject的子类,它还向超级视图添加视图。
我添加了一个由滑块组成的Settings.bundle。当滑块值为“ ON / 1”时,我在主窗口的“捕获”中将视图显示为子视图。当滑块值为“ OFF / 0”时,我必须从“捕获”中删除添加的视图,并释放“捕获”中存在的所有对象。
当滑块值为“ OFF / 0”时,我根本不想将“ Capture”类创建的视图隐藏到主视图上。
我想在应用程序发送到后台而不是在应用程序终止时取消分配“捕获”,因此我不能使用通知UIApplicationWillTerminateNotification取消分配单例。
如果我只隐藏“捕获”显示的视图,则“捕获”类将不必要使用内存
因此,现在我该如何取消分配单例。
即使事件发生,“ Capture”类视图也将位于每个视图控制器的顶部。
它由AppDelegate中调用的类方法分配一次。
单例是通过以下方式创建的:
static ScreenCapture *sharedScreen = nil;
+(Capture *)sharedScreenCapture
{
if (!sharedScreen)
{
sharedScreen = [[Capture alloc] init];
}
return sharedScreen;
}
最佳答案
为什么不创建一些ReLoad
方法来清除所有现金并使私有变量无效?
像这样:
+(void) reLoad {
@synchronized(self) {
// clear all the cashes...
sharedScreen = nil;
}
}
并在收到
UIApplicationWillTerminateNotification
后调用它[ScreenCapture reLoad];