2011-02-01 5 views
0

내 응용 프로그램에는 기초적인 일부 응용 프로그램이 있습니다. 하나의 매개 변수 (메시지)를 취하여이를 내 응용 프로그램에 전달하여 처리하는 하나의 메소드 (receivedInstantMessage)가 있습니다.이 Applescript의 문제점은 무엇입니까?

다음 AppleScript로 : 완벽

tell application "MyApp" 
    receivedInstantMessage "This is a message" 
end tell 

작품. 내 응용 프로그램은 메시지 ("This is a message")가 포함 된 대화 상자를 표시합니다.

iChat으로 메신저를 보낼 때 내 앱으로 메시지의 내용을 보낼 수있는 applescript를 실행하도록 설정하려고합니다. 메시지를 받았을 때 스크립트를 실행하도록 iChat에 알려 주었고 그 부분이 작동 중임을 알았습니다. 내가 지금 사용하고 스크립트는 하지 작업을 수행 : 나는 메시지를받을 때

using terms from application "iChat" 
    on message received theMessage from theBuddy for theChat 
     tell application "MyApp" 
      receivedInstantMessage theMessage     
     end tell 
    end message received 
end using terms from 

아무런 변화가 없습니다. iChat에서 메시지 변수 (theMessage)를 대체하고 임의의 문자열을 사용하더라도 여전히 아무것도하지 않습니다.

내가 뭘 잘못하고있어. 나는 (REALbasic 코더가 정상적으로) applescript하는 것은 매우 새로운 것이다.

[업데이트] : 현재 작동하는 것 같습니다. Mac을 다시 시작하면 문제가 해결됩니다. 매우 이상합니다.

+1

tell app"MyApp "문을"display dialog theMessage "와 같은 간단한 것으로 바꾸면 iChat 스크립트에서 어떻게됩니까? 그것을 표시 하시겠습니까? – Asmus

+0

매우 이상합니다. 모든 것이 이제 작동 중입니다. 모두 재시작으로 해결되었습니다. – Garry

답변

1

의미 론적 세부 사항 : 스크립터가 메시지를받지 못하고 앱으로 보내는 경우를 생각해보십시오. 예, 앱에서 수신하지만 'receivedInstantMessage'로 선택한 용어는 스크립터가 아닌 앱의 관점에서 나온 것입니다.

또한 낙타의 경우 용어가있는 사람으로 간주됩니다. AppleScript 용어는 공백을 포함 할 수 있습니다. 그리고 정말로 제대로하고 싶다면 용어를 명사와 동사로 분리해야합니다. (명사가 제대로 모델링 된 객체이고 속성이있는 경우 동사는 메시지를 조작하는 명령입니다.이 경우 메시지는 보낸 사람,받는 사람, 채널 등과 같은 속성을 가진 개체 인 "bla"메시지를 보내려합니다. send는 메시지 객체를 매개 변수로 사용하는 명령입니다. Snak 사전을 확인하십시오. 아주 훌륭하지만 완벽하지는 않습니다.

죄송합니다. 나는 수년간 applescripting 해왔고, 내가 이라면 정말로이 개발자가 applescript 지원을 추가 할 때 고맙게 생각한다. 내가 잘못 작성한 사전을 말할 때 나는 모든 applescripters를 말하고, 불만스러운 용어 선택은 실망스럽고 자극적이다. 특히 app 더 성숙 해지고 개발자는 "나는 애플 스크립트 인터페이스가 완전한 점검을 필요로한다는 것을 알고 있지만 기존 스크립트를 깨고 싶지 않습니다!"라고 말하기 시작합니다. 모든 applescripters는 기존 스크립트를 어기더라도 스크립팅 인터페이스가 향상되면 더 선호합니다. 따라서 : 지금 잘못하십시오, 그러나 근본적으로 나중에 그것을 향상시킬 준비를하십시오. :)

심지어 Apple은 iTunes에서 일부 예를 들어, updatePodcast 및 updateAllPodcasts 명령이 있습니다. 자신의 technote 2106에 따르면 이것은 잘못된 것입니다. 이름 지정 규칙에 특히주의를 기울여야합니다. 팟 캐스트 개체와 업데이트 명령이 있어야합니다. 따라서 "이름이 포함 된 모든 팟 캐스트를 삭제하십시오."앤 ("누구의 절이 appleScript의 가장 멋진 기능 중 하나입니다!)

관련 문제