我想用Apple在AppleScriptObjc中创建一个autoreleasepool,但我无法保留它。 这是代码:
property NSAutoreleasePool : class "NSAutoreleasePool"
script AppDelegate
...
on buttonClicked_(sender)
set pool to NSAutoreleasePool's alloc()'s init()
...
pool's drain()
end buttonClicked_
end script
在代码中,我收到了这个调试错误:
-[NSAutoreleasePool retain]: Cannot retain an autorelease pool (error -10000)
我用谷歌搜索,我发现“[NSAutoreleasepool alloc] init]”只能在没有ARC的情况下使用,相反,“@ autoreleasepool”可以与ARC一起使用而不使用ARC。
在Objective-C中,我们可以使用@autoreleasepool。例如:
int main()
{
@autoreleasepool {
...
}
}
但AppleScriptObjc没有'{'或'}',所以我们不能使用@autoreleasepool。但是,我试过了,我收到了一个错误 代码:
@autoreleasepool
...
错误:
error: Expected “end” but found unknown token. (-2741)
如何在AppleScriptObjc中使用@autoreleasepool?
答案 0 :(得分:0)
Autoreleasepool不受您的控制 - 您无法在ASOC中执行此操作。内存管理由框架处理。为什么你认为你需要autoreleasepool? Applescript是单线程的,如果你想尝试启动另一个线程进程,你必须使用Objective-C代码,但它不能是Applescript / ASOC进程,只能是纯粹的Obj-C。
有关它的更多讨论,请参阅此帖:http://macscripter.net/viewtopic.php?id=41359 Shane Stanley对ASOC非常了解,阅读他的帖子。