小编LSh*_*Shi的帖子

Interface Builder文件中的未知Window类(null),而是创建通用Window

我的应用程序使用故事板,窗口必须使用自定义类MyWindow,或者在运行时/启动应用程序,有一条错误消息说:

Interface Builder文件中的未知Window类(null),而是创建通用Window

升级到Xcode 9.1之后我才注意到这一点,但我不确定它是否曾存在过.

类似的问题在这里:Xcode 6 Strange Bug:Interface Builder文件中的未知类

更新:

我的另一个项目没有这个问题.我稍后会调查.

UPDATE2:

在这两个项目中,窗口由自定义窗口控制器拥有.我检查了故事板xml但没有找到任何奇怪的东西.

macos xcode cocoa storyboard nswindow

31
推荐指数
3
解决办法
4868
查看次数

Swift弱的懒惰变量不会编译

为了证明这个问题,我做了一个vanilla Cocoa项目.这是AppDelegate.swift:

import Cocoa

@NSApplicationMain
class AppDelegate: NSObject, NSApplicationDelegate {

    weak lazy var isGood : NSNumber? = {
        return true
    }()

    func doSomething() {
        let result = isGood!
    }

    func applicationDidFinishLaunching(aNotification: NSNotification) {
        // Insert code here to initialize your application
    }

    func applicationWillTerminate(aNotification: NSNotification) {
        // Insert code here to tear down your application
    }
}
Run Code Online (Sandbox Code Playgroud)

Xcode给出了这个:

unkown:0:错误:无法转换类型'NSNumber?'的返回表达式 (又名"可选")返回类型'NSNumber?'

unkown:0:不能指定'NSNumber?'类型的值?输入'NSNumber ??'

unkown:0:不能指定'NSNumber?'类型的值?输入'NSNumber ??'

在我的实际项目中,它是MyCustomClass(而不是NSNumber)的另一个对象.除类型外,错误相同MyCustomClass.

如果我删除weaklazy从声明中删除,一切都很好.但我想从被+1保存引用计数,因为MyCustomClassNSViewController这是一定要永远存在. …

cocoa weak-references lazy-evaluation swift

11
推荐指数
2
解决办法
3325
查看次数

如何实现像Finder中的搜索字段

Finder的搜索字段

在我的OS X应用程序(使用Cocoa)中,我想实现一个像Finder中的搜索字段(参见上面的屏幕截图).

我在考虑继承NSSearchFieldNSSearchFieldCell.后者应负责管理"代币".我已阅读查看编程指南,控制和细胞编程主题和的文档NSTokenField[Cell],NSSearchField[Cell],NSCell.

我不清楚一些事情:

1)在子类中,如何重用可能提供的放大镜图标NSSearchFieldCell?这个图标是NSImage?它有一个动画,我应该学习什么如果我必须自己实现动画?

2)应该使用什么来实现下拉按钮(如示例图像中的"NAME"按钮).用于对搜索类别(例如"NAME")和关键字(例如"yh")进行分组的类是什么?"NAME"之后的"箭头"是什么?

我们也欢迎任何书籍,文章或其他资源建议.

一个类似的相关问题是带有令牌的搜索字段等邮件(Mac OS X 10.7)

2015-07-26更新:

自Yosemite以来,NSCell的用法发生了变化, 如何在不创建NSButtonCell子类的情况下创建自定义主题NSButton? 与该主题相关.单元格将被弃用,因此使用它是不明智的.

macos cocoa objective-c swift

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

结构(不变性)与线程安全有何关系

我读过一篇关于Swift中不变性/结构的文章。有一部分说:

在函数式编程中,副作用通常被认为是不好的,因为它们可能以意想不到的方式影响您的代码。例如,如果在多个位置引用了一个对象,则每个更改都会自动在每个位置发生。正如我们在简介中所看到的,在处理多线程代码时,这很容易导致错误:因为您可以从另一个线程修改您刚刚检查的对象,所以所有假设都可能无效。

使用Swift结构,变异不会有相同的问题。该结构的突变是局部副作用,仅适用于当前的结构变量。因为每个struct变量都是唯一的(或者换句话说:每个struct值都有一个所有者),所以几乎不可能以这种方式引入错误。除非您是跨线程引用全局结构变量,否则就是这样。

在银行帐户示例中,有时必须更改或替换帐户对象。使用a struct不足以保护帐户免受多线程更新帐户的困扰。如果我们使用一些锁或队列,也可以使用class实例代替struct,对吗?

我尝试编写一些不确定导致竞态条件的代码。主要思想是:两个线程都首先获取一些信息(的一个实例Account),然后根据获取的内容覆盖保存该信息的变量。

struct Account {
    var balance = 0

    mutating func increase() {
        balance += 1
    }
}

class ViewController: NSViewController {

    override func viewDidLoad() {
        super.viewDidLoad()

        // method1()
        method2()
    }

    func method1() {
        var a = Account(balance: 3) {
            didSet {
                print("Account changed")
            }
        }

        // /sf/ask/3213876991/
        let queue = DispatchQueue.global()

        queue.async {
            a.increase()
            print("global: \(a.balance)")
        }

        DispatchQueue.main.async {
            a.increase()
            print("main: \(a.balance)")
        } …
Run Code Online (Sandbox Code Playgroud)

multithreading struct immutability thread-safety swift

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

如何在使用docker-compose和非root用户时将node_modules保留在容器中?

我正在寻找一种同时实现这些目标的方法:

  • 在容器内使用非root用户
  • 保持node_modules容器内部(不要"污染"主机上的工作目录)
  • 不使用 Dockerfile

我不确定这些目标是否被视为"最佳实践".例如,保持node_modules在容器内部有其缺点.

目前我的撰写文件是这样的:

services:
  # ...

  node:
    image: "node:9"
    user: "node"
    working_dir: /home/node/app
    environment:
      # - NODE_ENV=production
      - NPM_CONFIG_PREFIX=/home/node/.npm-global
      - PATH=$PATH:/home/node/.npm-global/bin
    volumes:
      - ./proj/:/home/node/app
      - /home/node/app/node_modules # mark1
    ports:
      - "3001:3001"
    command: >
      bash -c "echo hello
      && ls -lh /home/node/app/ 
      && npm install
      && npm i -g babel-cli
      && npm i -g flow-bin
      && npm start"
    depends_on:
      - redis
Run Code Online (Sandbox Code Playgroud)

但是有

"Error: EACCES: permission denied, access '/home/node/app/node_modules'".

如果我注释掉该#mark1 …

node.js docker docker-compose

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

泄漏仪器中的减号是什么意思?

我正在使用Xcode的Instruments来查看我的应用程序中是否有任何泄漏.但我发现图表有点令人困惑.该应用程序在完成某项工作时会得到一个交叉,但之后它只会得到减号.

在此输入图像描述

引用计数最终似乎为零.我对阅读不太确定.

在此输入图像描述

官方文档有点过时.

xcode xcode-instruments xcode7

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