gpt4 book ai didi

Objective-c - NSData initWithContentsOfFile 与 dataWithContentsOfFile

转载 作者:行者123 更新时间:2023-12-05 02:24:01 30 4
gpt4 key购买 nike

这两个 objective-c 语句有什么区别?

NSData *documentBytes = [NSData dataWithContentsOfFile:filePath];

与此相对:

NSData *documentBytes = [NSData initWithContentsOfFile:filePath];

从 Apple 的 NSData Class Reference 页面,它对每个

dataWithContentsOfFile - 通过从给定路径指定的文件中读取每个字节来创建并返回数据对象。

initWithContentsOfFile - 返回通过从给定路径指定的文件中读取数据初始化的数据对象。

对我来说,它们在功能上似乎是等同的,但我非常怀疑它们在所有情况下都做同样的事情,对吧?

提前致谢...-埃尔金

最佳答案

当你使用init时,你总是必须使用alloc,像这样:

NSData *documentBytes = [[NSData alloc] initWithContentsOfFile:filePath];

这将返回一个保留计数为 1 的 NSData 对象,您现在拥有该引用并负责释放它。

使用dataWithContentsOfFile

NSData *documentBytes = [NSData dataWithContentsOfFile:filePath];

你得到一个自动释放的 NSData 对象。你可以使用它而忘记它,自动释放池会处理它。如果你想存储它,你必须保留它。

当然,当您使用 ARC 时,您可以忘记所有这些 ;-),方法本质上是相同的。

关于Objective-c - NSData initWithContentsOfFile 与 dataWithContentsOfFile,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16744692/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com