2012-05-27 3 views
0

this PGMidi example code을 RubyMotion으로 변환하는 방법은 무엇입니까? The documentation the MIDIPacketList에는 특별한주의 사항이 언급되어 있으며 RubyMotion에서 계정을 어떻게 처리해야할지 모르겠습니다. 예 :RubyMotion으로 MIDIPacketList를 반복하는 방법은 무엇입니까?

배열로 정의 된 패킷은 가변 길이이므로 어레이로 액세스 할 수 없습니다.

- (void) midiSource:(PGMidiSource*)midi midiReceived:(const MIDIPacketList *)packetList 
{ 
    [self performSelectorOnMainThread:@selector(addString:) 
          withObject:@"MIDI received:" 
         waitUntilDone:NO]; 

    const MIDIPacket *packet = &packetList->packet[0]; 
    for (int i = 0; i < packetList->numPackets; ++i) 
    { 
     [self performSelectorOnMainThread:@selector(addString:) 
           withObject:StringFromPacket(packet) 
          waitUntilDone:NO]; 
     packet = MIDIPacketNext(packet); 
    } 
} 

나는 '패킷'으로 역 참조/I 포인터의 참조를 잃고 알고 지역 VAR : 여기

는 지금까지 내가 번역에 들어 왔로, 더 아래의 예이고, 및 'packetList'를 수정하는 데 어려움을 겪고 있습니다.

def midiSource(midi, midiReceived:packetList) 
    self.performSelectorOnMainThread('addString', 
        withObject:'MIDI received:', 
        waitUntilDone:false) 

    packet = packetList.packet[0] 
    i = 0 
    while i < packetList.numPackets 
    i += 1 

    self.performSelectorOnMainThread('addString', 
            withObject:stringFromPacket(packet), 
            waitUntilDone:false) 
    packet = MIDIPacketNext(packet) 
    end 
end 

어떤 안내해 주셔서 감사합니다!

+2

어떤 오류가 있습니까? 추가 문자열 선택기에 콜론이있을 가능성이 가장 높습니다 (예 : 'addString :' –

+0

안녕하세요 폴, 답장을 보내 주셔서 감사합니다! 나는 RubyMotion에서 휴식을 취하고 Objective-C를 조금 더 파고 들기로 결정했다. RubyMotion에 대한 학습 곡선은 Objective-C의 더 나은 접지없이 불쾌하게 가파르게 나타났다. 일단 내 발 아래에이 스레드를 업데이 트됩니다. –

답변

0

찾고있는 포인터를 처리하는 경우 RubyMotion은 Pointer 클래스를 제공합니다. http://www.rubymotion.com/developer-center/guides/runtime/#_pointers

+0

링크 주셔서 감사합니다! 지원 요청을 제출하고 RubyMotion 컴파일러에 버그가 있음을 알게되었습니다. 지원 담당자는 [버그 보고서 제출] (http://hipbyte.myjetbrains.com/youtrack/issue/RM-33#comment=74-760) 일부 활동을 보았지만 10 개월 동안은 여전히 해상도 없음. RubyMotion으로 미디 애플리케이션을 작성하는 것에 관해서는 확실히 저를 포기합니다. –

관련 문제