我在为Core Motion实例化我的CMMotionManager对象时遇到了崩溃.这是在运行iOS 12.0.1的iPhone X上.
我可以通过单视图应用程序使用以下视图控制器可靠地重现这一点.
import UIKit
import CoreMotion
class ViewController: UIViewController {
var motion: CMMotionManager?
override func viewDidLoad() {
super.viewDidLoad()
// This causes a crash on iPhone Xs, iOS 12.0.1
self.motion = CMMotionManager()
}
}
Run Code Online (Sandbox Code Playgroud)
完整示例项目位于https://github.com/doctorcolinsmith/motiontestcrash/tree/master
运行上面的代码时,我在调试器中输出以下输出的线程上出现故障.
=================================================================
Main Thread Checker: UI API called on a background thread: -[UIApplication applicationState]
PID: 3634, TID: 630341, Thread name: com.apple.CoreMotion.MotionThread, Queue name: com.apple.root.default-qos.overcommit, QoS: 0
Backtrace:
4 libobjc.A.dylib 0x000000019b0d3894 <redacted> + 56
5 CoreMotion 0x00000001a19337a4 CoreMotion + 305060
6 CoreMotion 0x00000001a1933cd8 …Run Code Online (Sandbox Code Playgroud) 我正在尝试为Swift 4/iOS 11中的os_log编写一个方便的包装器,但是我已经遇到了传递可变参数的艰难战斗.
基本上,我想编写一个如下所示的函数.
static let logger = OSLog(subsystem: "com.example.foo", category: "foobar")
func logError(_ message: StaticString, _ args: Any...) {
os_log(message, log: logger, type: .error, args)
}
Run Code Online (Sandbox Code Playgroud)
不幸的是,我似乎无法弄清楚传递参数的神奇语法,并且在CVarArg讨论的泥潭中有点迷失.
(...这让我想念Python的splatting语法)
我正在尝试在 RealityKit 中加载模型和纹理(在 ARView 实例中设置),但我似乎无法弄清楚如何指定材料应该是双面的。
我将模型加载为ModelEntity,纹理加载为TextureResource. 模型和纹理正在加载,但正在向一侧倾斜。由于模型是开放的(即背面是可见的),它的渲染方式存在差距。
到目前为止,我有,
let entity: ModelEntity = try .loadModel(named: "model.obj")
var material = SimpleMaterial()
material.baseColor = try .texture(.load(named: "texture.png"))
entity.model?.materials = [material]
Run Code Online (Sandbox Code Playgroud)
我希望找到一个属性,例如
material.twoSided = true
Run Code Online (Sandbox Code Playgroud)
但到目前为止,我还没有在 RealityKit 中找到等效的东西。
有人知道如何在 RealityKit 中设置双面材质吗?
任何人都可以推荐一个很好的资源来开始编写Emacs模式吗?具体来说,我正在研究编写语法高亮和缩进模式所需的内容.