直接使用NSString

ite*_*nyh 2 iphone objective-c nsstring

我发现我通常直接使用NSString,如:

 self.text = @"word";
 label.text = @"word";
 function(@"word");
Run Code Online (Sandbox Code Playgroud)

我认为直接使用NSString是一种错误的方法,因为@"word"在使用后会有一个retainCount为2.是对的吗?

什么是@""的retainCount?它是自动释放对象还是保留1?

更重要的是,我遇到了一些内存泄漏,如下图所示:

在此输入图像描述

我怀疑它与直接使用NSString有关.

Ole*_*ann 7

从本质上讲,NSString文字的保留计数是无限的.这些对象的内存在编译时由编译器保留,并且在应用程序运行期间永远不会释放,无论您多久尝试保留或释放它们.

这是另一个很好的例子,说明关注保留计数是错误的.你应该只关心黄金的内存管理规则:如果你把一个物体的所有权(使用alloc,new,copyretain),您必须释放以后自动释放它.否则,你没有.