实际上,我正在开发一个启用了 ARC
的项目。我知道使用 alloc
和 init
是获取对象的 ownership
。我知道,如果我创建这样的字符串
NSString *myString = [[NSString alloc]initWithFormat:@"Something"];
然后我需要释放
我自己的myString
。 如果我使用启用了 ARC 会怎样?我不能释放自己。那么它会造成泄漏吗?或者我不应该像这样创建对象?
我也可以像下面的代码一样创建一个字符串。
NSString *myString = [NSString stringWithFormat:@"Something"];
但是对于支持 ARC 的项目我需要使用哪种类型呢?如果我使用第一种类型会怎样?
最佳答案
如果您使用 ARC,所有必要的 release
调用都会在您编译时为您添加。它不会泄漏。
两者的区别
NSString *myString = [[NSString alloc]initWithFormat:@"Something"];
和
NSString *myString = [NSString stringWithFormat:@"Something"];
是第一个会在该 block 中最后一次引用 myString
后自动释放,而第二个是自动释放的实例,只会在运行循环结束时释放。差别不大,但如果您使用大量对象,请尽量避免使用自动释放的对象以保持较低的内存使用率。
关于objective-c - 在启用 ARC 的项目中使用 alloc、init,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13495464/