我有一个名为“ 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];

09-30 17:04
查看更多