Как бы перевести this PGMidi example code в RubyMotion? The documentation the MIDIPacketList упоминает особые оговорки, и я не уверен, как их учитывать в RubyMotion. Пример:Как перебирать MIDIPacketList с помощью RubyMotion?
Обратите внимание, что пакеты в списке, определенные как массивы, могут быть недоступны в качестве массива, поскольку они являются переменной длиной.
Вот пример, и далее вниз, насколько я получил в переводе:
- (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
Спасибо за какие-либо указания!
Какие ошибки вы получаете? В одном случае у вашего селектора добавленной строки, скорее всего, есть двоеточия в конце, например. 'addString:' –
Эй, Пол, спасибо за ответ! Я решил отдохнуть от RubyMotion и немного углубиться в Objective-C. Кривая обучения для RubyMotion оказалась неприятно крутой без лучшего заземления в Objective-C. Я обновлю эту тему, как только подниму ноги. –