This question already has an answer here:
Loading from mainBundle
                                
                                    (1个答案)
                                
                        
                                2年前关闭。
            
                    
public func dataFromFile(_ filename: String) -> Data? {
   @objc class TestClass: NSObject { }
   let bundle = Bundle(for: TestClass.self)
   if let path = bundle.path(forResource: filename, ofType: "json") {
      return (try? Data(contentsOf: URL(fileURLWithPath: path)))
   }
   return nil
}


我在教程中找到了这段代码,并对这两行的内容感到困惑:

@objc class TestClass: NSObject { }
let bundle = Bundle(for: TestClass.self)


我知道我们有该应用程序的主要捆绑包,但是为什么要为称为TestClass的目标c类创建捆绑包?

最佳答案

我知道我们有该应用程序的主捆绑包,但是为什么要为名为TestClass的目标c类创建捆绑包?


第二捆绑通常是一个框架。由于代码来自教程,因此作者可能想解释一下什么是捆绑软件以及如何访问它们。

拥有一个类不需要这样做,因为运行时环境会搜索正确的类包。但是,如果您想加载其他资源(视频,图像,声音等),则必须拥有自己的资源。为了获得正确的捆绑软件,您可以向那里的一个班级索要捆绑软件。

关于ios - 从Objective C类加载捆绑软件,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/45808435/

10-13 01:56