Есть ли вред в создании "частного" экземпляра NSNotificationCenter? - PullRequest
3 голосов
/ 05 августа 2011

Я использую уведомления для обеспечения двусторонней связи между парой объектов, когда объект A делает запрос, но может быть освобожден до того, как объект B ответит.

NSNotificationCenter идеально подходит для этого, поскольку объект A может просто добавить себя в качестве наблюдателя.Когда объект B отвечает, он отправляет уведомление, а если объект A исчезает, уведомление просто игнорируется.

Поскольку уведомление предназначено только для объекта A, было бы целесообразно установить частный экземплярNSNotificationCenter для этих уведомлений, вместо размещения их на defaultCenter.Единственным недостатком будет дополнительная память для экземпляра NSNotificationCenter, но экономия времени при отправке уведомлений на любом из них.

Я что-то упускаю?

Ответы [ 3 ]

3 голосов
/ 05 августа 2011

Неа.В Какао NSWorkspace из AppKit делает именно это .

2 голосов
/ 05 августа 2011

Я думаю, что вы можете пойти обоими путями, я не могу придумать реальных (не) преимуществ. У меня обычно есть центр уведомлений как явная зависимость, инициализированная для общего центра. Таким образом, вы можете изолировать уведомления, если хотите, но объект работает из коробки:

@interface Observable : NSObject
@property(retain) NSNotificationCenter *radio;
@end

@implementation Observable
@synthesize radio;
- (id) init {
    [super init];
    [self setRadio:[NSNotificationCenter defaultCenter]];
    return self;
}
@end

Краткий ответ: делай как хочешь .

0 голосов
/ 05 августа 2011

Неважно, вы можете просто использовать центр уведомлений по умолчанию, и только объект A / объект B слушают друг друга. Просто попросите объект А удалить себя из центра уведомлений перед освобождением, чтобы предотвратить EXC_BAD_ACCESS.

...