从Objective C类加载包

时间:2017-08-22 03:26:21

标签: ios objective-c

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类创建一个包?

1 个答案:

答案 0 :(得分:1)

  

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

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

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