小编Nic*_*ick的帖子

在Swift 3中以编程方式创建一个没有XIB的NSViewController

我正在尝试在不使用Interface Builder的情况下制作macOS应用程序.我的项目构建和运行,但我的主视图控制器似乎没有加载其视图.也就是说,viewDidLoad()不调用该方法.我正在使用Xcode-beta 8.0 beta 6(8S201h).

NSViewController有关该view属性的Swift 3文档说明了这一点:

如果在访问它时尚未设置此属性的值,则视图控制器将调用该loadView()方法.反过来,该方法从视图控制器nibNamenibBundle属性标识的nib文件中设置视图.

如果要直接设置视图控制器的视图,请在创建视图控制器后立即设置此属性的值.

并为viewDidLoad:

对于以编程方式创建的视图控制器,在loadView()方法完成后立即调用此方法.

最后,对于isViewLoaded:

视图控制器使用其视图的延迟加载:在视图控制器加载到内存后,其isViewLoaded属性的值立即为false.trueloadView()方法返回之后且在系统调用viewDidLoad()方法之前,值将更改为.

所以文档让我相信它是可能的.


我的项目看起来像这样:

 .
 ??? main.swift
 ??? Classes
     ??? AppDelegate.swift
     ??? Controllers   
         ??? PrimaryController.swift
Run Code Online (Sandbox Code Playgroud)

main.swift

import Cocoa

let delegate = AppDelegate()
NSApplication.shared().delegate = delegate
NSApplicationMain(CommandLine.argc, CommandLine.unsafeArgv)
Run Code Online (Sandbox Code Playgroud)

AppDelegate.swift

import Cocoa

class AppDelegate: NSObject, NSApplicationDelegate {
    func applicationDidFinishLaunching(_ aNotification: Notification) {
        let pc …
Run Code Online (Sandbox Code Playgroud)

macos xcode cocoa swift

6
推荐指数
2
解决办法
3367
查看次数

当bash执行代码时,为什么源代码会出现语法错误?

脚本很简单:

#!/bin/bash
if [[ 0 ]]; then
   echo foo
fi
Run Code Online (Sandbox Code Playgroud)

错误表现为:

$ source ./sample.sh
./sample.sh:2: parse error near `]]'
Run Code Online (Sandbox Code Playgroud)

但请注意,bash能够执行脚本就好了:

$ /bin/bash ./sample.sh
foo

$ /bin/bash --version
GNU bash, version 4.1.2(1)-release (x86_64-redhat-linux-gnu)
Copyright (C) 2009 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>

This is free software; you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.
Run Code Online (Sandbox Code Playgroud)

从bash文档:

[[ expression ]]
   Return a status of …
Run Code Online (Sandbox Code Playgroud)

bash shell posix

1
推荐指数
1
解决办法
272
查看次数

标签 统计

bash ×1

cocoa ×1

macos ×1

posix ×1

shell ×1

swift ×1

xcode ×1