@autoreleasepool в AppleScriptObjc с ARC

Я хочу создать autoreleasepool в AppleScriptObjc с ARC, но не смог его сохранить. Вот код:

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)

Как я могу использовать @autoreleasepool в AppleScriptObjc?


person subdiox    schedule 26.08.2013    source источник
comment
Я только учусь, но я бы хотел, чтобы с ARC вам не нужно было бы иметь какие-либо пулы автоматического выпуска. Зачем он вам нужен?   -  person Kaydell    schedule 26.08.2013
comment
Это потому, что я запускал функцию в фоновом режиме с этим кодом: performSelectorInBackground_withObject_("function", AppDelegate) Это позволяет мне автоматически освобождать пулы.   -  person subdiox    schedule 26.08.2013


Ответы (1)


Autoreleasepool находится вне вашего контроля — вы не можете сделать это в ASOC. Управление памятью осуществляется фреймворком. Как вы думаете, почему именно вам нужен autoreleasepool? Applescript является однопоточным, и вам придется использовать код Objective-C, если вы хотите попытаться запустить другой многопоточный процесс, но это не может быть процесс Applescript/ASOC, только чистый Obj-C.

См. этот пост для дополнительного обсуждения: http://macscripter.net/viewtopic.php?id=41359 Шейн Стэнли очень хорошо разбирается в ASOC, читайте его посты.

person Chris Paveglio    schedule 13.11.2013