以下两行
之间的存储角度是否有任何区别NSString *dbFilePath =[[NSString alloc]initWithString:[[NSBundle mainBundle] pathForResource:dbName ofType:nil]];
和
NSString *dbFilePath =[[[NSBundle mainBundle] pathForResource:dbName ofType:nil] retain];
“[NSString alloc] initWithString:”或只是“保留”
提前致谢
答案 0 :(得分:2)
实际上,没有区别。但是,在第一种情况下,您暂时还有一个NSString
对象存在,而不是第二种情况,即pathForResource
返回的对象将在不久之后自动释放,和它是幸存的副本。
在第二种情况下,不进行复制。而是由pathForResource
返回的对象直接保留。在高峰时间减少一个物体。
我发现第二段代码更直接。
但是,我想知道你为什么保留从堆栈中引用的东西。我希望dbFilePath
更像是一个持久的东西,比如一个成员变量。