【发布时间】:2018-03-09 16:52:00
【问题描述】:
我已经用 Swift 和 Cocoa 制作了这个 prefpane...昨天我根据迁移指南将它迁移到 Swift 4,经过一些初步的痛苦之后,一切似乎都运行良好。
我在 Sierra 上执行此操作,使用最新的 SDK 运行 Xcode 9.0。
问题是,至少有两个运行 High Sierra 的人告诉我窗格根本没有为他们运行。尝试从命令行运行它,这是报告的错误:
2017-09-27 23:00:59.921 System Preferences[3047:337095] Error loading /Users/luckman212/Library/PreferencePanes/SwiftDefaultApps.prefPane/Contents/MacOS/SwiftDefaultApps: dlopen(/Users/luckman212/Library/PreferencePanes/SwiftDefaultApps.prefPane/Contents/MacOS/SwiftDefaultApps, 265): can't resolve symbol _OBJC_CLASS_$_NSError in /Users/luckman212/Library/PreferencePanes/SwiftDefaultApps.prefPane/Contents/MacOS/../Frameworks/libswiftCore.dylib because dependent dylib #1 could not be loaded in /Users/luckman212/Library/PreferencePanes/SwiftDefaultApps.prefPane/Contents/MacOS/../Frameworks/libswiftCore.dylib
2017-09-27 23:00:59.922 System Preferences[3047:337095] [NSPrefPaneBundle instantiatePrefPaneObject] (/Users/luckman212/Library/PreferencePanes/SwiftDefaultApps.prefPane): principalClass is nil.
2017-09-27 23:01:00.072 System Preferences[3047:337095] ### AE 1868656752 sender's PID is 3047 (System Preferences)
我还没有升级,目前也没有办法升级,即使我这么倾向。有没有人遇到过这个问题,和/或知道它的原因?
【问题讨论】:
-
我正在使用屏幕保护程序,当我尝试从“系统偏好设置”启动它时出现类似的链接器错误。我不知道如何解决它。我使用 High Sierra。
-
我想我看到你在 developer.apple.com 上发过帖子了?虽然我认为我理解那里给出的解释(本质上是你做错了®,不要使用 Swift;即不是很有帮助),我认为这可能是 High Sierra 中的一个错误,因为它肯定不会发生在早期版本的操作系统上。
-
嗨,我认为这既是 High Sierra 中的一个错误,又是 macOS 并没有真正支持 Swift 中的屏幕保护程序。这是一个类似的项目,据我了解,他们还使用了一些技巧来使其运行:github.com/JohnCoates/Aerial/issues/4
-
您是否尝试在构建设置中“嵌入 Swift 运行时库”?
-
确实,这是一个 Apple 漏洞。我创建了一个新的 prefpane 项目,构建 => 它安装。我添加了 Swift => built doesn't install。我检查了终端中的 rpath 和链接行,确保复制了 swift 库,我手动链接了 AppKit。没有任何帮助。然后我删除了 Swift 并重建 => 作品。
标签: swift cocoa macos-high-sierra