在Yosemite之前,Swift屏保可以在Mac OS X中运行吗?

pup*_*eno 7 macos screensaver osx-mavericks swift

我重写了Xcode从Objective-C到Swift生成的屏幕保护程序模板,当我尝试加载它时,我收到以下消息:

你不能在这个版本的MacOSX上使用BlahBlah屏幕保护程序.

请与供应商联系以获取新版本的屏幕保护程序.

我现在正在经营小牛队.这是否意味着Swift屏幕保护程序只能在优胜美地工作,甚至不在那里?

这是我用来替换Objetive-C的Swift代码:

import Foundation
import ScreenSaver

class BlahBlahView : ScreenSaverView {
    convenience override init() {
        self.init(frame: CGRectZero, isPreview: false)
    }

    override init(frame: NSRect, isPreview: Bool) {
        super.init(frame: frame, isPreview: isPreview)

        setAnimationTimeInterval(1.0 / 30.0)
    }

    required init?(coder aDecoder: NSCoder) {
        super.init(coder: aDecoder)
    }


    override func startAnimation() {
        super.startAnimation()
    }

    override func stopAnimation() {
        super.stopAnimation()
    }

    override func drawRect(rect: NSRect) {
        super.drawRect(rect)
    }

    override func animateOneFrame() {

    }

    override func hasConfigureSheet() -> Bool {
        return false
    }

    override func configureSheet() -> NSWindow? {
        return nil
    }
}
Run Code Online (Sandbox Code Playgroud)

这些是我的项目设置:

在此输入图像描述

这最初是在MacOSX 10.9上创建的Objective-C项目(没有Swift Screensaver模板),我使用的API,屏幕保护程序,已存在多年.

Jua*_*nti 13

要使用Swift编写的屏幕保护程序在Mac OS X 10.9上运行,请将项目设置Embedded Content Contains Swift Code设置Yes.

在此输入图像描述

在代码级别,它将被视为两行:

EMBEDDED_CONTENT_CONTAINS_SWIFT = YES;
Run Code Online (Sandbox Code Playgroud)

在project.pbxproj文件中.


Rob*_*Rob 2

检查您的项目设置的“OS X 部署目标”。它可能默认为您的开发计算机正在运行的任何操作系统,但请仔细检查。如果你想支持10.9,你必须将此设置更改为10.9:

部署目标

另外(这比其他任何事情都更重要),无论您使用什么部署目标,您都可以在代码中包含 10.10 API。因此,您还需要检查您正在调用的任何 Cocoa 方法的文档,以确保它们不是特定于 10.10 的。除非您使用的是较新的功能,否则这种情况不太可能发生,但也需要记住这一点。