3

例如,

  1. NSString *string = [NSString stringWithString:@"a string"];
    
  2. NSString *string = [[NSString alloc] initWithString:@"a string"];
    

当我们谈论字符串时,通过以下方式设置字符串有什么区别:

    NSString *string = @"a string";

?

最后一点,这不是关于 NSString 的具体问题。我问的是所有 NSObjects 的更广泛范围。

4

1 回答 1

4

ARC 没有区别,但在此之前有区别:alloc/init返回一个引用计数至少为一个的项目,release当你不需要它时,你需要它,而 class 方法返回一个自动释放的项目,你retain如果您想保留它,则需要。ARC 编译器知道这一切,并根据您的所有权规范为您保留/释放。

于 2012-07-19T17:40:55.560 回答