Objective c 返回大值的NSUserAppleScriptTask从不调用completionHandler

Objective c 返回大值的NSUserAppleScriptTask从不调用completionHandler,objective-c,cocoa,applescript,Objective C,Cocoa,Applescript,我有一个Objective-C应用程序,它使用NSUserAppleScriptTask调用一些Applescript。applescript返回的字符串大小可能不同 如果绳子短,它就可以正常工作。然而,当它变得很长的时候,它开始默默地失败。如果它试图返回40000个字符长的字符串,则永远不会调用completionHandler,并且永远不会打印返回的字符串…。没有消息发送到日志,也没有消息发送到控制台。只是从来没有人打过电话 30000个字符的字符串可以正常工作。我不确定确切的截止点在哪里

我有一个Objective-C应用程序,它使用NSUserAppleScriptTask调用一些Applescript。applescript返回的字符串大小可能不同

如果绳子短,它就可以正常工作。然而,当它变得很长的时候,它开始默默地失败。如果它试图返回40000个字符长的字符串,则永远不会调用
completionHandler
,并且永远不会打印
返回的字符串…
。没有消息发送到日志,也没有消息发送到控制台。只是从来没有人打过电话

30000个字符的字符串可以正常工作。我不确定确切的截止点在哪里

以前有人见过这个吗?是否有可以更改的属性或配置设置来增加此限制?还是我只需要放弃NSUserAppleScript任务

代码 applescripteper.scpt
这看起来像个苹果虫。你应该提交一份报告

运行代码时,
osascript
会暂停以下调用图:

+ 2812 start  (in libdyld.dylib) + 8  [0x7fff97a205b4]
+   2812 exit  (in libsystem_c.dylib) + 55  [0x7fff9157f403]
+     2812 __cxa_finalize_ranges  (in libsystem_c.dylib) + 345  [0x7fff9157f0ff]
+       2812 std::__1::ios_base::Init::~Init()  (in libc++.1.dylib) + 16  [0x7fff8f1ebd98]
+         2812 std::__1::basic_ostream<char, std::__1::char_traits<char> >::flush()  (in libc++.1.dylib) + 68  [0x7fff8f1e2f5a]
+           2812 std::__1::__stdoutbuf<char>::sync()  (in libc++.1.dylib) + 137  [0x7fff8f1ec30d]
+             2812 fflush  (in libsystem_c.dylib) + 40  [0x7fff9155c31c]
+               2812 __sflush  (in libsystem_c.dylib) + 87  [0x7fff9155c3c0]
+                 2812 _swrite  (in libsystem_c.dylib) + 87  [0x7fff91563e96]
+                   2812 __write_nocancel  (in libsystem_kernel.dylib) + 10  [0x7fff918e57ba]
+2812启动(在libdyld.dylib中)+8[0x7fff97a205b4]
+2812出口(在libsystem_c.dylib中)+55[0x7fff9157f403]
+2812 uu cxa u finalize u范围(在libsystem_c.dylib中)+345[0x7fff9157f0ff]
+2812 std::_1::ios_base::Init::~Init()(在libc++.1.dylib中)+16[0x7fff8f1ebd98]
+2812 std::_1::basic_ostream::flush()(在libc++.1.dylib中)+68[0x7fff8f1e2f5a]
+2812 std::uu 1::u stdoutbuf::sync()(在libc++.1.dylib中)+137[0x7fff8f1ec30d]
+2812 fflush(在libsystem_c.dylib中)+40[0x7fff9155c31c]
+2812 uu sflush(在库系统动态库中)+87[0x7fff9155c3c0]
+2812_swrite(在libsystem_c.dylib中)+87[0x7fff91563e96]
+2812写入取消(在libsystem_kernel.dylib中)+10[0x7fff918e57ba]
我想你会遇到麻烦的

如果您使用
nsusAppleScriptTask
使用的未记录的
osascript
参数,您将获得原始AppleEvent输出,其中包含一个16字节的头&
UTF-16
编码文本


repeat
循环中,任何超过
32760
的操作都会导致此行为<代码>32760*
2
+
16
=
65536

我提交了一份错误报告。谢谢你的详细回复。如果我收到苹果的消息,我会更新这个。现在是2018年,我也注意到了同样的事情,我想得到整整一个月的git日志。他们对你的错误报告说了什么吗?
on test()
    set str to ""
    repeat 40000 times
        set str to str & "x"
    end repeat
    return str
end fetchMusic
+ 2812 start  (in libdyld.dylib) + 8  [0x7fff97a205b4]
+   2812 exit  (in libsystem_c.dylib) + 55  [0x7fff9157f403]
+     2812 __cxa_finalize_ranges  (in libsystem_c.dylib) + 345  [0x7fff9157f0ff]
+       2812 std::__1::ios_base::Init::~Init()  (in libc++.1.dylib) + 16  [0x7fff8f1ebd98]
+         2812 std::__1::basic_ostream<char, std::__1::char_traits<char> >::flush()  (in libc++.1.dylib) + 68  [0x7fff8f1e2f5a]
+           2812 std::__1::__stdoutbuf<char>::sync()  (in libc++.1.dylib) + 137  [0x7fff8f1ec30d]
+             2812 fflush  (in libsystem_c.dylib) + 40  [0x7fff9155c31c]
+               2812 __sflush  (in libsystem_c.dylib) + 87  [0x7fff9155c3c0]
+                 2812 _swrite  (in libsystem_c.dylib) + 87  [0x7fff91563e96]
+                   2812 __write_nocancel  (in libsystem_kernel.dylib) + 10  [0x7fff918e57ba]