я после уведомления, как это в операции:iPhone развития: ноль USERINFO при получении уведомления
DownloadStatus * status = [[DownloadStatus alloc] init];
[status setMessage: @"Download started"];
[status setStarted];
[status setCompleteSize: [filesize intValue]];
[userInfo setValue:status forKey:@"state"];
[[NSNotificationCenter defaultCenter]
postNotificationName:[targetURL absoluteString]
object:nil userInfo:userInfo];
[status release];
DownloadStatus это объект, который содержит информацию ABOU загрузки, что в настоящее время в настоящее время загружены. userInfo - это свойство объекта, который был инициализирован в части init и хранится в течение всей продолжительности операции. Он создан так:
NSDictionary * userInfo = [NSDictionary dictionaryWithObject:targetURL
forKey:@"state"];
«targetURL» является NSString, я использую это как раз, чтобы убедиться, что все работает нормально. Когда я получаю событие - я зарегистрирован как это:
[[NSNotificationCenter defaultCenter]
addObserver:self selector:@selector(downloadStatusUpdate:)
name:videoUrl
object:nil];
Здесь «videoUrl» является строкой, которая содержит URL скачанного, так что я буду получать уведомления об URL Я жду, чтобы увидеть загрузки.
Селектор реализована следующим образом:
- (void) downloadStatusUpdate:(NSNotification*) note {
NSDictionary * ui = note.userInfo; // Tried also [note userInfo]
if (ui == nil) {
DLog(@"Received an update message without userInfo!");
return;
}
DownloadStatus * state = [[ui allValues] objectAtIndex:0];
if (state == nil) {
DLog(@"Received notification without state!");
return;
}
DLog(@"Status message: %@", state.message);
[state release], state = nil;
[ui release], ui = nil; }
Но этот селектор всегда принимает нулевое USERINFO. Что я делаю не так?
MrWHO
Спасибо Вам! Вот и все: теперь это выглядит очевидно, конечно, я не мог этого видеть, когда просто смотрел на код. Спасибо за помощь! – MrWHO