Swift

时间:2018-01-27 02:51:22

标签: ios swift xcode macos metalkit

我有一个从Xcode 9 / New Project / Cross Platform Game App创建的应用程序,目标:macOS和iOS。

我编写了以下简单函数来从数据资产中加载文本。

func dataAssetAsString(_ name: String) -> String? {
  if let asset = NSDataAsset(name: NSDataAsset.Name(name)) {
    return String(data: asset.data, encoding: .utf8)
  }
  return nil
}

我对以下事情感到困惑:

  • 此功能仅在导入UIKit或AppKit时有效。
  • 以某种方式导入MetalKit而不是UIKIt或AppKit使其工作。这真让我困惑。这应该与MetalKit无关。

我发现iOS和macOS之间的代码共享的大多数答案建议在文件/填充开始时进行某种条件导入。

我浏览了WWDC 2014 Session 233: Sharing code between iOS and OS X的幻灯片,它明确表示我们不应该在Swift中进行填充。

swift shimming no

另一方面,我不明白应该做什么而不是shimming。提到的为5行函数创建和编译共享框架的非常复杂的过程不是正确的方向。

  1. 2018年(Swift 4,Xcode 9,iOS 11,macOS 10.13),将这样一个简单的跨平台代码添加到应用程序的推荐方法是什么?

  2. MetalKit的神奇之处是什么让它在没有垫片的情况下工作?它内部是否有垫片?

0 个答案:

没有答案