带有应用沙盒的Cocoa应用中的NSOpenPanel给出错误 [英] NSOpenPanel in Cocoa app with app-sandboxing gives an error

查看:83
本文介绍了带有应用沙盒的Cocoa应用中的NSOpenPanel给出错误的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在Cocoa应用程序中做一个简单的文件打开面板.我启用了权利和应用程序沙箱,下面的代码现在在setFloatingPanel上给我一个错误.不知道为什么吗?

I am doing a simple file open panel in my Cocoa app. I enable entitlements and app sandboxing and the following code now gives me an error on setFloatingPanel. Can't figure out why?

NSArray* fileTypes = [[NSArray alloc] initWithObjects:@"png", @"PNG", nil];  
NSOpenPanel *panel;
panel = [NSOpenPanel openPanel];
[panel setTitle:@"Select Photo"];
[panel setFloatingPanel:YES];

导致以下错误

2012-02-14 11:43:45.831 MyApp[451:707] -[NSRemoteOpenPanel setFloatingPanel:]: unrecognized selector sent to instance 0x400886ea0
2012-02-14 11:43:45.832 MyApp[451:707] -[NSRemoteOpenPanel setFloatingPanel:]: unrecognized selector sent to instance 0x400886ea0
2012-02-14 11:43:45.837 MyApp[451:707] (
    0   CoreFoundation                      0x00007fff83b18286 __exceptionPreprocess + 198
    1   libobjc.A.dylib                     0x00007fff8b7f0d5e objc_exception_throw + 43
    2   CoreFoundation                      0x00007fff83ba44ce -[NSObject doesNotRecognizeSelector:] + 190
    3   CoreFoundation                      0x00007fff83b05133 ___forwarding___ + 371
    4   CoreFoundation                      0x00007fff83b04f48 _CF_forwarding_prep_0 + 232
    5   MyApp                               0x0000000100019f77 openFiles + 519
    6   MyApp                               0x0000000100012b19 -[MyController addImageButtonClicked:] + 25
    7   CoreFoundation                      0x00007fff83b07a1d -[NSObject performSelector:withObject:] + 61
    8   AppKit                              0x00007fff878d9710 -[NSApplication sendAction:to:from:] + 139
    9   AppKit                              0x00007fff878d9642 -[NSControl sendAction:to:] + 88
    10  AppKit                              0x00007fff878d956d -[NSCell _sendActionFrom:] + 137
    11  AppKit                              0x00007fff878d8a30 -[NSCell trackMouse:inRect:ofView:untilMouseUp:] + 2014
    12  AppKit                              0x00007fff879588e0 -[NSButtonCell trackMouse:inRect:ofView:untilMouseUp:] + 489
    13  AppKit                              0x00007fff878d763a -[NSControl mouseDown:] + 786
    14  AppKit                              0x00007fff878a20e0 -[NSWindow sendEvent:] + 6306
    15  AppKit                              0x00007fff8783a68f -[NSApplication sendEvent:] + 5593
    16  AppKit                              0x00007fff877d0682 -[NSApplication run] + 555
    17  AppKit                              0x00007fff87a4f80c NSApplicationMain + 867
    18  MyApp                               0x0000000100001f4c main + 44
    19  MyApp                               0x0000000100001f14 start + 52
    20  ???                                 0x0000000000000003 0x0 + 3
)

推荐答案

如前所述,您已启用应用沙箱功能,这说明了为什么在崩溃日志中看到NSRemoteOpenPanel的原因.

As you've mentioned you've enabled app sandboxing, that explains why you're seeing NSRemoteOpenPanel in your crash log.

显然,Apple的NSRemoteOpenPanel并非源自NSOpenPanelNSSavePanelNSPanel(这是定义setFloatingPanel方法的位置).

Apparently Apple's NSRemoteOpenPanel doesn't descend from NSOpenPanel or NSSavePanel or NSPanel (which is where the setFloatingPanel method gets defined).

我建议在 http://bugreporter.apple.com 提交增强请求(或错误).

I'd recommend filing an enhancement request (or bug) at http://bugreporter.apple.com

这也可能是苹果公司不希望沙盒应用程序具有浮动面板或窗口位于常规"窗口层之外,在这种情况下,您的错误会很快关闭或被评论.

It also may be that Apple doesn't want sandboxed apps to have floating panels or windows that live outside the "normal" Window layer, in which case your bug will get closed or commented upon really quick.

这篇关于带有应用沙盒的Cocoa应用中的NSOpenPanel给出错误的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆