gpt4 book ai didi

ios - 从 mainBundle 加载

转载 作者:搜寻专家 更新时间:2023-11-01 06:40:12 26 4
gpt4 key购买 nike

在一些流行的开源 swift 项目中。我注意到以下方法用于从主包加载文件。

@objc class TestClass: NSObject { }

let bundle = NSBundle(forClass: TestClass.self)
let path = bundle.pathForResource(filename, ofType: "json")

我们也可以使用这种方法。

let path = NSBundle.mainBundle().pathForResource(filename, ofType: "json")

为什么有人会选择第一种方法而不是第二种方法?

最佳答案

这将返回包含 TestClass 类的包:

NSBundle(forClass: TestClass.self)

虽然这会返回应用程序的主要包:

NSBundle.mainBundle()

如果您从您的应用程序代码中执行此代码,它将始终返回您的主包。但如果该类包含在不同的库或框架中,它将返回包含它的包。

例如,CocoaPods 中的所有 Swift 库都是使用动态框架集成的,并且它们部署在主包内的不同包中。所以所有的框架都必须使用嵌入式包来访问它们的资源。

我建议使用第一种方法(NSBundle(forClass:) 方法)来提高代码的可移植性。创建动态框架时需要它。

关于ios - 从 mainBundle 加载,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36474106/

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