Objective c 释放一个静态变量
我创建了一个类,该类使用静态NSSet来定义我的类的每个实例共享的一些元素 要定义此se,我使用以下代码:Objective c 释放一个静态变量,objective-c,cocoa,Objective C,Cocoa,我创建了一个类,该类使用静态NSSet来定义我的类的每个实例共享的一些元素 要定义此se,我使用以下代码: myStaticSet = [[NSSet setWithObjects: @"element one", @"element two", nil ]retain]; 如你所见,我保留了这一
myStaticSet = [[NSSet setWithObjects:
@"element one",
@"element two",
nil
]retain];
如你所见,我保留了这一套
我真的不明白我在哪里可以发布myStaticVariable我很确定我不能在DealLocal中发布它。。。那么有没有办法释放静态变量呢
//编辑
添加一个新的类方法来释放静态值可能是一个很好的解决方案
+(void)cleanstatic{
[mystatic release];
}
当我确定我已经学完这门课的时候再叫它 如果您正在使用一个静态变量并希望释放它,那么它可能根本就不应该是静态的?它是否在应用程序的整个生命周期中使用?在这种情况下,我会说你不必费心发布它
否则,如果使用此变量的代码有一些通用的“端点”,那么就可以将其删除。您不应该释放它。正如您所说,它由类的每个实例共享,您永远无法确定您不会创建新实例。因此,只要应用程序在运行,该集合就应该存在。当然,这是可能的,但在例如多线程场景中,它很容易出错。如果可能的话,我建议您重构代码,以便将其转换为一个实例变量,这样您就可以在处理完后按照该实例变量进行处理并发布。有没有什么特别的东西让你想要释放这个变量?它包含大量数据吗?它只需要20个字符串,但我正在寻找编写此代码的正确方法。我认为为这个类的每个实例创建20个字符串不是正确的方法,因此,我认为采用静态变量。因此,在多线程场景中,这个实现将是一个大混乱?这取决于您是否要更改变量。如果它是常数,你也可以这样做;常数。那么多个线程就不会产生问题。如果它正在缓存你想要的东西,比如说,你需要NSCache来处理诸如释放内容之类的事情,但是你必须从文件中加载数据。