У меня есть PGMidi.h
со следующим делегатомДелегаты между классом и viewController.m
@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");
}
I знаю, что делегат работает, потому что в PGMidi
класс I также размещен
- (void) midiSource:(PGMidiSource*)midi midiReceived:(const MIDIPacketList *)packetList
{
NSLog(@"test");
}
и он работает.
Но по какой-то причине он не общается с viewController.m. Я также объявляю класс @PGMidi в заголовке. Но, возможно, мне нужно импортировать весь PGMidi.h?
Мне всегда было интересно об этом; что означает «присваивание»? Я читал документы яблока и другие вопросы, но я не могу понять его смысл. – pasawaya
Назначение представляет собой слабую ссылку - в этом случае, поскольку ваш контроллер просмотра уже сохранен в памяти, нам не нужно увеличивать количество удержаний объекта, делая его сильным свойством. Во многих случаях, если вы не используете слабую ссылку в настройке делегата, вы можете создать цикл сохранения. проверьте http://stackoverflow.com/questions/918698/why-are-objective-c-delegates-usually-given-the-property-assign-instead-of-retai –