2009-10-12 3 views
0

저는 Growl에 필요한 대리자 메서드를 구현하는 0.5b1을 사용하는 작은 MacRuby 프로젝트에서 작업 중입니다 (이 응용 프로그램은 알림을 위해 Growl을 사용합니다).MacRuby에서 대리자 메서드에 의해 반환 된 데이터의 포인터

알림을 클릭 할 때 Growl 콜백에 응답 할 수 있기를 원하지만 ::GrowlApplicationBridge.setGrowlDelegate self과 함께 Growl 대리인을 등록하면 대표자에게 Growl 등록 정보가있는 NSDictionary*을 요청합니다.

나는 표준 NSDictionary 인스턴스를 반환하여 객체를 포인터 등으로 강제 변환하려고 시도했으나 세그먼트 오류가 발생할 때마다 (포인터가 아니라 객체를 다시 전달하기 때문에 발생하는 것 같다. 개체에).

개체 자체에 대한 포인터를 얻거나 p = Pointer.new("NSDictionary")을 사용하면 어떤 식 으로든 데이터를 할당 할 수 있는지 궁금합니다 (p.assign(dict)을 사용하면 정수를 예상하므로 형식 오류가 발생 함).

나는

답변

2

루비 해시에있는 NSDictionary이다 .... 다른 옵션은 대리인으로 행동하고 단지 루비에서 해당에 후크,하지만 다소 목적을 패배하는 ObjC 클래스를 작성하는 것입니다 추측 MacRuby. , 내가 잘하면 AllNotifications 키에 nil을 통과로 인해 믿는 으르렁 사전 제대로 설정 키 (없는,하지만


framework 'Growl' 

def registrationDictionaryForGrowl 
    {'TicketVersion' => 1, 'AllNotifications' => nil, 'ApplicationId' => 'test'} 
end 

GrowlApplicationBridge.setGrowlDelegate(self) 

:.을 당신의 라인을 따라 뭔가를 할 수 있어야 실제 알림 배열을 전달하면 작동합니다.)


2009-10-27 15:47:12.305 macruby[61552:903] GrowlApplicationBridge: Error writing registration dictionary at /var/folders/8Z/8ZW9lfcxHlWsi+jWQGSXXk+++TI/-Tmp-/macruby-61552-96CEC625-EEE2-49D3-8532-0184DB93E0F4.growlRegDict: Property list invalid for format 
+0

이것은 유망한 것처럼 보입니다.이 태그를 직접 사용해 보았지만 실제로 메모리에서 새 NSDictionary를 반환하면 기억이 안납니다. 코드를 작성하고 시도하십시오 ... 감사합니다! –