【发布时间】:2013-08-26 01:19:03
【问题描述】:
我想用 ARC 在 AppleScriptObjc 中创建一个自动释放池,但我无法保留它。 代码如下:
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?
【问题讨论】:
-
我只是在学习,但我希望使用 ARC,您不需要任何自动释放池。为什么需要一个?
-
那是因为我在后台使用以下代码运行了一个函数:
performSelectorInBackground_withObject_("function", AppDelegate)这让我拥有了自动释放池。
标签: objective-c cocoa nsautoreleasepool applescript-objc