Objective-C:从alloc/init和类方法调用创建对象有什么区别?

Objective-C:从alloc/init和类方法调用创建对象有什么区别?,objective-c,Objective C,比如说, 当我们谈论字符串时,设置字符串是否有任何区别: NSString *string = @"a string"; ? 最后请注意,这不是关于NSString的特定问题。我要问的是所有对象的更大范围 ARC没有区别,但在此之前有一个区别:alloc/init返回一个ref count至少为一的项,当您不需要它时,您需要释放它,而class方法返回一个自动释放的项,如果您想保留它,您需要保留它。ARC编译器知道所有这些,并根据您的所有权规范为您保留/发布这些信息。哦,没有ARC

比如说,

  • 当我们谈论字符串时,设置字符串是否有任何区别:

        NSString *string = @"a string";
    
    ?


    最后请注意,这不是关于NSString的特定问题。我要问的是所有对象的更大范围

    ARC没有区别,但在此之前有一个区别:
    alloc/init
    返回一个ref count至少为一的项,当您不需要它时,您需要
    释放它,而class方法返回一个自动释放的项,如果您想保留它,您需要
    保留它。ARC编译器知道所有这些,并根据您的所有权规范为您保留/发布这些信息。

    哦,没有ARC我该怎么办
    NSString *string = [[NSString alloc] initWithString:@"a string"];
    
        NSString *string = @"a string";