1

因此,我必须实施沙盒以将我的 Mac 应用程序保留在 Mac 应用程序商店中。当我启用沙盒时,我的应用程序大部分都可以工作。我使用“top”命令来获取整个用户系统的 CPU 信息和 RAM 信息。有了沙盒,我就无法再使用这些功能了。这是收到的运行时错误:

/bin/sh: /usr/bin/top: Operation not permitted
/bin/sh: /usr/bin/top: Operation not permitted
2012-05-29 20:40:57.911 QuickToggles[53714:403] *** -[__NSArrayI objectAtIndex:]: index 1 beyond bounds [0 .. 0]
2012-05-29 20:40:57.928 QuickToggles[53714:403] (
    0   CoreFoundation                      0x00007fff986bcf56 __exceptionPreprocess + 198
    1   libobjc.A.dylib                     0x00007fff97f98d5e objc_exception_throw + 43
    2   CoreFoundation                      0x00007fff98666370 -[__NSArrayI objectAtIndex:] + 208
    3   QuickToggles                        0x0000000100001961 -[StatusBarAppAppDelegate updateInfo:] + 177
    4   Foundation                          0x00007fff94666f40 __NSFireTimer + 102
    5   CoreFoundation                      0x00007fff98671934 __CFRUNLOOP_IS_CALLING_OUT_TO_A_TIMER_CALLBACK_FUNCTION__ + 20
    6   CoreFoundation                      0x00007fff98671486 __CFRunLoopDoTimer + 534
    7   CoreFoundation                      0x00007fff98651e11 __CFRunLoopRun + 1617
    8   CoreFoundation                      0x00007fff98651486 CFRunLoopRunSpecific + 230
    9   HIToolbox                           0x00007fff9806b4d3 RunCurrentEventLoopInMode + 277
    10  HIToolbox                           0x00007fff980726d3 ReceiveNextEventCommon + 181
    11  HIToolbox                           0x00007fff9807260e BlockUntilNextEventMatchingListInMode + 62
    12  AppKit                              0x00007fff90441e31 _DPSNextEvent + 659
    13  AppKit                              0x00007fff90441735 -[NSApplication nextEventMatchingMask:untilDate:inMode:dequeue:] + 135
    14  AppKit                              0x00007fff9043e071 -[NSApplication run] + 470
    15  AppKit                              0x00007fff906ba244 NSApplicationMain + 867
    16  QuickToggles                        0x0000000100001882 main + 34
    17  QuickToggles                        0x0000000100001854 start + 52
    18  ???                                 0x0000000000000003 0x0 + 3
)
4

1 回答 1

0

听起来您想显示有关每个正在运行的进程的信息,例如活动监视器的主窗口。你只是不能在沙箱中做到这一点。时期。*

因此,请提交一份雷达,要求 Apple 为您提供一种方法,并解释为什么您认为这是合理的。同时,保持非沙箱化。如果 Apple 告诉您您不应该这样做(我认为这是一个可能的结果),那么您必须删除该功能,或者停止在 App Store 中销售(并找到一些过渡的方法您现有的用户到另一个频道)。

实际上,您的应用程序所做的一半似乎无法在沙盒中运行——而且无论如何都已经违反了 MAS 指南,这意味着每次提交更新时,您都有被拒绝和卡住的风险。

*实际上,如果用户启用了可访问性,您可以通过例如将脚本发送到 Activity Monitor 并通过 UI 脚本或其他方式抓取其输出,但即使这样有效,MAS 审阅者也不会喜欢它......所以不要'吨。

于 2012-06-04T21:31:15.820 回答