我想NSString
在 Objective-C 类中添加一个静态变量,但是我对管理它的内存持谨慎态度。
NSString *myImportantString = 0;
@implementation MySingletonClass
/* Option 1 */
+ (void)initialize {
myImportantString = [[NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) objectAtIndex:0] stringByAppendingPathComponent:@"criticalFolder"];
}
/* Option 2 */
+ (void)initialize {
NSString *tmp = [[NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) objectAtIndex:0] stringByAppendingPathComponent:@"criticalFolder"];
myImportantString = [[NSString alloc] initWithString:tmp];
}
在选项 1 中,myImportantString
是一个自动释放的对象,那么我如何知道它将在何处/何时释放?这种不确定性促使我转而使用选项 2。但是,当我使用 ARC 时,它将如何/何时(如果有的话?)发布?根据+initialize
方法,在方法myImportantString
中没有再次使用,因此ARC不会release
在方法末尾插入适当的代码+initialize
吗?
我(相对)相信它将为我正确处理,但我仍然想知道它是如何工作的。