swift - addSubview 上的 NSViewController 子类 EXC_BAD_INSTRUCTION

标签 swift cocoa nsviewcontroller

我正在尝试编写一些与 macOS 和 iOS 跨平台的代码。我知道这不是这样做的方法,但是我不得不奇怪地开发东西,因为我正在写一本 Playground 书,而 Metal 不能在模拟器上工作。

所以我有以下类型定义。有两套,一套用于当我希望在 MacOS 中编译时,另一套用于 iOS

//iOS
public typealias View = UIView
public typealias ViewController = UIViewController

//macOS
public typealias View = NSView
public typealias ViewController = NSViewController

我一次只保留一组未注释的内容。

以下代码在 iOS 上完美运行

public class PVC: NSViewController{
    public override func viewDidLoad() {
        super.viewDidLoad()

    }
    public required init?(coder: NSCoder) {
        fatalError("init(coder:) has not been implemented")
    }

    public init() {
        super.init(nibName: nil, bundle: nil)
    }
    public func addView(viewer: NSView) {
        view.addSubview(viewer)
    }
}

let pvc = PVC()
let grid = //UIView initializer
pvc.addView(viewer: grid)

但是,在 MacOS 上,pvc.addView 行进行编译,但会导致消息错误:执行被中断,原因:EXC_BAD_INSTRUCTION(代码=EXC_I386_INVOP,子代码=0x0)。 进程已留在中断点,运行时使用“thread return -x”返回到表达式求值之前的状态。

我已经检查过, GridView 的格式正确,并且可以在必要时添加到默认 IOS 项目的 View Controller 中。这只是 NSViewControllers 的一些问题导致了这个问题。

最佳答案

您没有从 Storyboard 或 Xib 加载 View Controller 。如果您正在使用,请尝试从 Storyboard/Xib 初始化您的 View Controller 。那么这个就得不到了。

关于swift - addSubview 上的 NSViewController 子类 EXC_BAD_INSTRUCTION,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49462786/

相关文章:

Swift spritekit didbegincontact 被延迟调用

iphone - 为什么没有 NSHTTPURLProtocol 类?

swift - 使用 swift 强制刷新另一个 ViewController 组件

macos - 将 NSViewController 与自定义 View 结合使用

Cocoa 应用程序首选项(一个 XIB 中的 View ?)

ios - "' isDeveloperModeEnabled ' is deprecated: This no longer needs to be set during development. "isDeveloperModeEnabled 用于什么

swift - 迭代 firebase 的子项以查找与用户电话号码匹配的键

objective-c - 如何使用 SwiftPM 在 objective-c 模块中使用 swift 模块?

objective-c - 自定义 NSView 在底部栏上填充油漆

objective-c - 如何确定 Cocoa 中的 Internet 连接?