Erg*_*gin 3 objective-c nsdata
这两个 Objective-C 语句有什么区别?
NSData *documentBytes = [NSData dataWithContentsOfFile:filePath];
Run Code Online (Sandbox Code Playgroud)
与此相比:
NSData *documentBytes = [NSData initWithContentsOfFile:filePath];
Run Code Online (Sandbox Code Playgroud)
在 Apple 的 NSData 类参考页面中,它对每个类进行了以下说明
dataWithContentsOfFile - 通过读取给定路径指定的文件中的每个字节来创建并返回数据对象。
initWithContentsOfFile - 返回一个数据对象,该数据对象通过从给定路径指定的文件中读入数据来初始化。
对我来说,这些看起来功能相同,但我非常怀疑它们在所有情况下都做同样的事情,对吗?
预先感谢...-埃尔金
当你使用 时init,你总是必须使用alloc,如下所示:
NSData *documentBytes = [[NSData alloc] initWithContentsOfFile:filePath];
Run Code Online (Sandbox Code Playgroud)
这将返回一个保留计数为 1 的 NSData 对象,您现在拥有该引用并负责释放它。
使用时dataWithContentsOfFile
NSData *documentBytes = [NSData dataWithContentsOfFile:filePath];
Run Code Online (Sandbox Code Playgroud)
你会得到一个自动释放的 NSData 对象。您可以使用它并忘记它,自动释放池会处理它。如果你想存储它,你就必须保留它。
当然,当您使用ARC时,您可以忘记所有这些;-),方法本质上是相同的。
| 归档时间: |
|
| 查看次数: |
3026 次 |
| 最近记录: |