我需要释放一个恒定的NSString吗?

Sar*_*gon 3 cocoa memory-management objective-c literals nsstring

我正在阅读它所说的内存管理规则

- (void)printHello {

    NSString *string;

    string = [[NSString alloc] initWithString:@"Hello"];

    NSLog(@"%@", string);

    [string release];

}
Run Code Online (Sandbox Code Playgroud)

你有所有权并且必须释放string,但我很好奇@"Hello".@" "是创建和的语法NSString,它是一个对象.那不是泄露了吗?

小智 10

@"…"是一个文字实例NSString.当编译器看到一个文字字符串时,它会将字符串映射到二进制文件(例如您的程序),并且在NSString加载二进制文件时(例如,当您运行程序时)该字符串可用作对象.您不必管理文字字符串占用的内存,因为它们是二进制文件的固有部分 - 它们始终可用,它们永远不会被释放,您不必担心管理它们的内存.