2013-08-26 4 views
2

ARC로 AppleScriptObjc에서 자동 복구 풀을 만들고 싶지만 유지할 수 없습니다. 이 여기에 코드입니다 : 코드에서ARSC로 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] 초기화]가"ARC없이에만 사용할 수 있습니다 발견 대신 "@autoreleasepool"을 ARC 및 ARC없이 사용할 수 있습니다.

Objective-C에서는 @autoreleasepool을 사용할 수 있습니다. 예 :

int main() 
{ 
    @autoreleasepool { 
     ... 
    } 
} 

그러나 AppleScriptObjc이없는이 '{'또는 '}', 그래서 우리는 @autoreleasepool을 사용할 수 없습니다. 그러나, 나는 그것을 시도하고, 나는 오류가 발생했습니다.
코드 :

@autoreleasepool 
    ... 

오류 :

error: Expected “end” but found unknown token. (-2741) 

가 어떻게 AppleScriptObjc에 @autoreleasepool을 사용할 수 있습니까?

+0

방금 ​​배우기는했지만 ARC를 사용하면 자동 풀이 필요하지 않습니다. 왜 그걸 필요로하니? – Kaydell

+0

그 이유는이 코드로 백그라운드에서 함수를 실행했기 때문입니다.'performSelectorInBackground_withObject _ ("function", AppDelegate)' 자동 풀이 생성됩니다. – usingsystem8

답변

0

Autoreleasepool이 (가) 제어 할 수 없습니다. ASOC에서 수행 할 수 없습니다. 메모리 관리는 프레임 워크에 의해 처리됩니다. 왜 자동 풀기가 필요하다고 생각합니까? Applescript는 단일 스레드이며 다른 스레드 프로세스를 시작하려는 경우 Objective-C 코드를 사용해야하지만 Applescript/ASOC 프로세스 일 수는 없으며 순수한 Obj-C 만 사용할 수 있습니다.

자세한 내용은이 게시물을 참조하십시오. http://macscripter.net/viewtopic.php?id=41359 셰인 스탠리 (Shane Stanley)는 ASOC에 대해 매우 잘 알고 있으며, 그의 게시물을 읽습니다.

관련 문제