Я перенес свое рабочее приложение из Xcode 3.2 в Xcode 4.2 IOS 5, и код для уведомлений не запускается.Я использовал NSNotificationsAdditions, чтобы каждый раз отправлять все уведомления в основной поток.Да, то, что работает в более ранней версии, теперь не работает.
- (void) postNotificationOnMainThread:(NSNotification *) notification {
if( [NSThread isMainThread] ) return [self postNotification:notification];
[self postNotificationOnMainThread:notification waitUntilDone:NO];
}
- (void) postNotificationOnMainThread:(NSNotification *) notification waitUntilDone:(BOOL) wait {
if( [NSThread isMainThread] ) return [self postNotification:notification];
[[self class] performSelectorOnMainThread:@selector( _postNotification: ) withObject:notification waitUntilDone:wait];
}
+ (void) _postNotification:(NSNotification *) notification {
[[self defaultCenter] postNotification:notification];
}
- (void) postNotificationOnMainThreadWithName:(NSString *) name object:(id) object {
if([NSThread isMainThread] ) return [self postNotificationName:name object:object userInfo:nil];
[self postNotificationOnMainThreadWithName:name object:object userInfo:nil waitUntilDone:NO];
}
- (void) postNotificationOnMainThreadWithName:(NSString *) name object:(id) object userInfo:(NSDictionary *) userInfo {
if([NSThread isMainThread]) return [self postNotificationName:name object:object userInfo:userInfo];
[self postNotificationOnMainThreadWithName:name object:object userInfo:userInfo waitUntilDone:NO];
}
- (void) postNotificationOnMainThreadWithName:(NSString *) name object:(id) object userInfo:(NSDictionary *) userInfo waitUntilDone:(BOOL) wait {
if([NSThread isMainThread]) return [self postNotificationName:name object:object userInfo:userInfo];
NSMutableDictionary *info = [[NSMutableDictionary alloc] initWithCapacity:3];
if( name ) [info setObject:name forKey:@"name"];
if( object ) [info setObject:object forKey:@"object"];
if( userInfo ) [info setObject:userInfo forKey:@"userInfo"];
[[self class] performSelectorOnMainThread:@selector( _postNotificationName: ) withObject:info waitUntilDone:wait];
[info release];
}
+ (void) _postNotificationName:(NSDictionary *) info {
NSString *name = [info objectForKey:@"name"];
id object = [info objectForKey:@"object"];
NSDictionary *userInfo = [info objectForKey:@"userInfo"];
[[self defaultCenter] postNotificationName:name object:object userInfo:userInfo];
}