2012-05-27 30 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); 
    } 
} 

我知道我失去了指針引用/用「包」解引用本地變量和'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編寫一個MIDI應用程序。 –