0

私はPGMidi.h次のデリゲートを持っています

@protocol PGMidiSourceDelegate
- (void) midiSource:(PGMidiSource*)input midiReceived:(const MIDIPacketList *)packetList;

次に、デリゲートが呼び出されviewController.mたときに取得したいだけですNSLog

@interface viewController () <PGMidiDelegate, PGMidiSourceDelegate>

@end

@implementation viewController;

- (void) midiSource:(PGMidiSource*)midi midiReceived:(const MIDIPacketList *)packetList   
{
  NSLog(@"test");
}

PGMidiクラスにも入れたので、デリゲートが機能していることはわかっています

- (void) midiSource:(PGMidiSource*)midi midiReceived:(const MIDIPacketList *)packetList  
{
 NSLog(@"test");
}

そしてそれは動作します。

しかし、何らかの理由でviewController.mと通信していません。また、ヘッダーで @PGMidi クラスを宣言しています。しかし、おそらく PGMidi.h 全体をインポートする必要がありますか?

4

2 に答える 2

1

PGMidi.h で、デリゲート プロパティを実際に宣言する必要があります。つまり、

@property (nonatomic, assign) id<PGMidiSourceDelegate> delegate;

synthesizePGMidi.m ファイルでそのプロパティを確認してください。次に、PGMidi.m で次のようにする必要があります。

-(void) midiSource:(PGMidiSource*)midi midiReceived:(const MIDIPacketList *)packetList {
    [delegate midiSource:midi midiReceived:packetList];
}

ビュー コントローラーを PGMidi オブジェクトのデリゲートとして実際に設定する必要もあります。

myPGMidi.delegate = myViewController;
于 2012-06-04T02:51:23.257 に答える
0

PGMidi.h で@endコードを終了するためにインクルードしますか? @protocol PGMidiSourceDelegateまた、あなたが言うことをviewController.hで確認してください@interface viewController : (parentClass) <PGMidiSourceDelegate。(parentClass) は、viewController が継承するクラスです。基本的に、問題は @end を忘れたか、viewController が PGMidi.h のデリゲートであることを指定しなかったことです。

于 2012-06-04T02:51:23.750 に答える