【问题标题】:NSPasteboard generalPasteboard returns nilNSPasteboard generalPasteboard 返回 nil
【发布时间】:2012-09-11 14:21:21
【问题描述】:

我正在尝试将 NSString 从作为插件加载到另一个程序中的 NSBundle 复制到粘贴板。

由于某种原因,[NSPasteboard generalPasteboard] 返回 nil。

我的代码来自 Apple 的 NSPasteboard documentationNSPasteboard programming guide

NSPasteboard *pasteboard = [NSPasteboard generalPasteboard];

// Outputs: (null)
NSLog(@"%@", pasteboard);

[pasteboard clearContents];
BOOL copiedToPasteboard = [pasteboard writeObjects:@[@"The string"]];

有什么我可能无意中造成的吗?

【问题讨论】:

  • @samfisher 是的,我的问题是关于Cocoa
  • 您在使用 ARC 吗?这可能是一个编译器错误...
  • @H2CO3 不使用 ARC。如果是,我如何证明它是编译器错误?
  • @MichaelRobinson:通过分配给实例变量或其他东西并显示内存管理不一致。无论如何,不​​过,你有什么奇怪的事情吗?这是一个普通的 Cocoa 应用程序,就像您从“Cocoa (Document-Based/CoreData/Whatever) Application”模板中获得的一样,还是有任何“曲折”?例如,如果这是一个命令行应用程序或使用兼容性 UI 工具包,那就是相关的。
  • 这是一个NSBundle,作为插件加载到主应用程序中。

标签: objective-c cocoa osx-mountain-lion appkit nspasteboard


【解决方案1】:

我已经构建了一个最小的应用程序,它加载一个包并在每个步骤中添加了[NSPasteboard generalPasteboard] 返回的值的日志记录。不幸的是,我无法重现此问题。这是我得到的输出:

NUAppDelegate> init:<NSPasteboard: 0x100647740>
NUAppDelegate> awakeFromNib:<NSPasteboard: 0x100647740>
NUAppDelegate> applicationDidFinishLaunching::<NSPasteboard: 0x100647740>
Loading plugin
Plugin> init:<NSPasteboard: 0x100647740>
Plugin> someMethod:<NSPasteboard: 0x100647740>

如果没有更多细节,我看不出我们如何找到答案。你有一些我们可以下载或检查的代码吗?

【讨论】:

  • 我也这样做了。我的问题很难调试,因为我的项目是一个NSBundle,它作为插件加载到我无法控制的应用程序(或源代码)中。我的测试人员没有同样的错误行为,所以我开始认为这个问题只存在于我的机器上。
【解决方案2】:

通过重新安装我的操作系统解决了我的问题。

我只能假设某处某处某时某时某事被损坏,导致了这个令人愤怒的问题。

【讨论】:

  • 你的回答不会编译。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-02-18
  • 2019-06-20
  • 2017-12-16
  • 2014-09-27
  • 2017-06-11
  • 2014-12-29
相关资源
最近更新 更多