Есть ли вред в создании частного экземпляра NSNotificationCenter?

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

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

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

Я что-то упустил?


person benzado    schedule 05.08.2011    source источник


Ответы (3)


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

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

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

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

person zoul    schedule 05.08.2011

Неа. В Cocoa NSWorkspace AppKit выполняет именно это.

person Peter Hosey    schedule 05.08.2011

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

person futureelite7    schedule 05.08.2011
comment
Я не спрашиваю, могу ли я использовать defaultCenter, я это уже знаю. - person benzado; 05.08.2011
comment
Цитата из документации Apple Каждая работающая программа Cocoa имеет центр уведомлений по умолчанию. Обычно вы не создаете свои собственные... - person futureelite7; 05.08.2011
comment
Мой вопрос: есть ли вред в том, чтобы делать X вместо Y? Ваш ответ: Вы можете сделать Y. - person benzado; 06.08.2011
comment
В этом нет ничего плохого. Идите прямо вперед. Я имею в виду, что ваша программа не будет внезапно терять мегабайты ОЗУ или падать без причины, если вы выделите свой собственный центр, если вы об этом спрашиваете. - person futureelite7; 06.08.2011