在下面的代码中,我使用 alloc 创建一个新的 NSString 并使用某个文件的内容对其进行初始化。因为我正在调用 alloc,所以我知道当我完成后,我有责任在字符串上调用release。但是变量“lines”和“line”呢?由于方法“componentsSeparatedByString”不以“new”或“create”一词开头,我可以假设“lines”将自动释放吗? “line”也有同样的问题,因为“objectAtIndex”也不以“new”或“create”开头。
NSString* buffer = [[NSString alloc] initWithData:[fileManager contentsAtPath:@"/foo"] encoding:NSUTF8StringEncoding]; NSArray* lines = [buffer componentsSeparatedByString:@"\n"]; NSString* line = [lines objectAtIndex:5]; // do something with line [buffer release];
那么上面的代码可以吗?或者我也应该在线路上调用“释放”?谢谢。
最佳答案
是的,线路和线路将自动释放。请记住:如果您明确执行了以下任一操作,则只需(auto)release
:alloc
、retain
、copy
>,新
。 (需要一些时间才能开始信任这些约定。)
关于objective-c - 我应该对这些 cocoa Objective-C 变量调用release吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2662570/