Отказ от ответственности: Я пытаюсь выполнить следующее упражнение, потому что я думаю, что это будет поучительно. Меня интересует, как это можно сделать. Поэтому, пожалуйста, не спешите вскакивать с «Это неправильный способ сделать это, вы никогда не должны так делать!»Окно отображения на OSX с использованием Swift без XCode или NIB
Работая с командной строки с помощью моего любимого текстового редактора, я хотел бы создать минимальную программу Swift, которая отображает окно.
Это приветственный мир GUI/Cococa, если хотите.
В том же духе я хочу избежать НИБ.
Итак, нет XCode, нет НИБ.
Я хотел бы:
- скомпилировать его с быстрым компилятором
- создать #! быстрый скрипт, который работает с использованием интерпретатора Swift
Если я могу сделать обе эти вещи, я почувствую свои ноги на земле и буду намного более легко обновляться до Xcode.
Я попробовал следующее:
window.swift
import Cocoa
@NSApplicationMain
class AppDelegate: NSObject, NSApplicationDelegate {
@IBOutlet weak var window: NSWindow!
let newWindow = NSWindow(contentRect : NSScreen.mainScreen()!.frame
, styleMask : NSBorderlessWindowMask
, backing : NSBackingStoreType.Buffered
, defer : false)
func applicationDidFinishLaunching(aNotification: NSNotification) {
// Insert code here to initialize your application
newWindow.opaque = false
newWindow.movableByWindowBackground = true
newWindow.backgroundColor = NSColor.whiteColor()
newWindow.makeKeyAndOrderFront(nil)
}
func applicationWillTerminate(aNotification: NSNotification) {
// Insert code here to tear down your application
}
}
Однако, пытаясь запустить из командной строки не удается:
[email protected] ~ /Users/pi/dev/macdev:
⤐ swift window.swift
window.swift:3:1: error: 'NSApplicationMain' attribute cannot be used in a
module that contains top-level code
@NSApplicationMain
^
window.swift:1:1: note: top-level code defined in this source file
import Cocoa
^
✘
Что правильный способ устранения Ошибка?
Подробнее: в конце пути к SDK отсутствует директива компиляции «/MacOSX10.11.sdk». С этим он работает! – telliott99