0

我有一个名为“Capture”的类,它是 NSObject 的子类,它还向超级视图添加视图。

我添加了一个由滑块组成的 Settings.bundle。当滑块值为“ON/1”时,我将主窗口中“捕获”中的视图显示为子视图。当滑块值为“OFF/0”时,我必须删除从“Capture”添加的视图并释放“Capture”中存在的所有对象。

当滑块值为“OFF/0”时,我只是不想将“Capture”类创建的视图隐藏到主视图上。

我想在应用程序发送到后台而不是在应用程序终止时释放“捕获”,所以我不能使用通知 UIApplicationWillTerminateNotification 来释放单例。

如果我只是隐藏“捕获”显示的视图,则“捕获”类将不必要地使用内存

那么现在我如何解除单例。

“捕获”类视图将位于每个视图控制器之上,即使事件发生时也是如此。它由 AppDelegate 中调用的类方法分配一次。

单例是这样创建的:

static ScreenCapture *sharedScreen = nil;

+(Capture *)sharedScreenCapture
{
    if (!sharedScreen) 
    {
        sharedScreen = [[Capture alloc] init];
    }
    return sharedScreen;
}
4

2 回答 2

3

为什么不创建一些ReLoad方法来清除您的所有现金并取消您的私有变量?

像这样的东西:

+(void) reLoad {
    @synchronized(self) {
        // clear all the cashes...
        sharedScreen = nil;
    }
}

并在收到后调用它UIApplicationWillTerminateNotification

[ScreenCapture reLoad];

于 2013-08-09T07:15:03.827 回答
2

您可以添加另一种方法:

+ (void)destroyScreenCapture
{
    sharedScreen = nil;
}

考虑单例是否真的是您使用的正确模式,以及您是否真的需要销毁单例,或者您是否应该“清理”它以释放它当前未使用的数据的所有内存。

于 2013-08-09T07:15:16.113 回答