【问题标题】:What does the square brackets in this initialization do in Objective C?这个初始化中的方括号在 Objective C 中做了什么?
【发布时间】:2014-08-29 17:40:28
【问题描述】:

我正在为SceneKit(逐行)将一些Objective C 代码转换为Swift。我在 Objective-C 中找到了这行代码,但我似乎无法弄清楚它的含义。

SCNMatrix4 _cameraHandleTransforms[SLIDE_COUNT]; 

来自这里:https://developer.apple.com/library/prerelease/ios/samplecode/SceneKitReel/Listings/SceneKitReel_AAPLGameViewController_m.html
我知道它正在创建一个SCNMatrix4,我知道SLIDE_COUNT 是一个解析为10 的常量。我不知道在这种情况下方括号会做什么。我认为没有发生任何数组访问。 Swift 抱怨它没有 SCNMatrix4 的下标访问权限,当我检查 Swift 库时这很有意义。

【问题讨论】:

  • 您是手动转换此代码,还是自动转换?
  • @Riley 我正在阅读 Obj-C 代码并逐行转换为 Swift。它来自这里:developer.apple.com/library/prerelease/ios/samplecode/…
  • 你懂 C 还是其他常见的编程语言???那是一个数组!!
  • @HotLicks 我从没碰过 C。除了 C 之外几乎所有其他东西。
  • (如果您确实没有 C 背景,那么您确实需要使用不具备 C 背景的教程(如果有的话)。)

标签: objective-c matrix swift scenekit


【解决方案1】:

您看到的是 C 风格的静态大小的数组声明。这一行声明了一个 SCNMatrix4 类型的 C 数组,大小为 SLIDE_COUNT

当您尝试翻译它时,Swift 会感到困惑,因为它认为您正在尝试对类型 SCNMatrix4 使用下标访问,这是一个普通的旧 C 结构。请参阅the Apple docs on that type 了解更多详情,并记住:

没有C,你就不能拥有Objective-C

【讨论】:

    【解决方案2】:

    它声明了一个 SCNMatrix4 结构数组。数组的大小为 SLIDE_COUNT。

    稍后在该文件 (SceneKitReel/AAPLGameViewController.m) 中,它会访问 _cameraHandleTransforms 数组中的各种项目。查看 setupEnvironment 和 presentStep: 方法。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-04-08
      • 1970-01-01
      • 2019-12-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-12-31
      相关资源
      最近更新 更多