Как лучше удалить обозреватель уведомлений

Я обычно использую NSNotification, как в примере ниже:

In viewDidLoad:

[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(foo:) name:kName1 object:nil];
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(bar:) name:kName2 object:nil];

In viewDidUnload и Dealloc:

[[NSNotificationCenter defaultCenter] removeObserver:self];

Но друг сказал мне, что я не должен использовать [[NSNotificationCenter defaultCenter] removeObserver:self];, потому что он удалит все наблюдатели, включая суперкласс. Он предложил мне использовать следующий код для удаления наблюдателей по одному.

[[NSNotificationCenter defaultCenter] removeObserver:self name:kName1 object:nil];
[[NSNotificationCenter defaultCenter] removeObserver:self name:kName2 object:nil];

Я проверил код библиотеки ASIHttpRequest (https://github.com/pokeb/asi-http-request). Это следует за предложением моих друзей.

Я хочу знать, прав мой друг или нет? На мой взгляд, поскольку текущий экземпляр будет выгружен или освобожден, уведомление суперкласса также бесполезно. И есть ли какое-либо системное уведомление об использовании подкласса UIViewController?

16
задан tangqiaoboy 6 April 2012 в 06:14
поделиться