objective-c - 我应该对这些 cocoa Objective-C 变量调用release吗?

标签 objective-c cocoa

在下面的代码中,我使用 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:allocretaincopy >,。 (需要一些时间才能开始信任这些约定。)

关于objective-c - 我应该对这些 cocoa Objective-C 变量调用release吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2662570/

相关文章:

objective-c - 如何使用 UIKit 计算文本的确切高度?

ios - 在调用 `deleteRowsAtIndexPaths:withRowAnimation` 之前删除对象仍然生成 : Invalid update: invalid number of rows in section 0

ios - 如何在不阻止 textView 触摸的情况下向所有 UITextView 添加一个 UIGestureRecognizer

objective-c - 如何使用 Mac 上的系统首选项以编程方式安排系统唤醒?

cocoa - 如何关闭窗口(卸载 NIB)?

ios - Objective C 如何在从第一个 VC 移动到第二个时停止无限循环

ios - 使用 Xcode 提交到 App Store

cocoa - 如何设置文本单元格中的字体大小以使字符串填充单元格的矩形?

cocoa - Finder 与应用程序沙箱同步关闭无法正常工作

objective-c - 当 UITextView 的文本更改时解析并创建 NSAttributedString