В своем фрагменте кода вы ссылаетесь на self
, что относится к вашему классу фреймворка, а не к вызывающему.У вашей техники также есть другая проблема, которая заключается в том, что если didBeginBackupSelector изменится после того, как вы зарегистрируетесь для уведомления, он будет работать не так, как ожидалось.Я бы порекомендовал вам сделать что-то вроде этого:
В вашем .h:
@property (nonatomic) SEL didBeginBackupSelector;
@property (nonatomic, assign) id didBeginBackupTarget;
В вашем .m:
// where you first want to register
// [[NSDistributedNotificationCenter defaultCenter] addObserver:self selector:@selector(backupHasStartedNotification:) name:@"backupHasStarted" object:nil];
// somewhere else in your file
- (void)backupHasStartedNotification:(NSNotification *)notification {
if (self.didBeginBackupSelector) {
[self.didBeginBackupTarget performSelector:self.didBeginBackupSelector withObject:notification];
}
}
Это будет работать, даже еслиdidBeginBackupSelector и didBeginBackupTarget изменяются после регистрации.