Если я правильно понимаю, вы можете использовать NSNotification, чтобы делать то, что вы хотите.В вашем классе головоломки вы можете использовать postNotificationName, чтобы сообщить любому классу, который наблюдает, когда головоломка меняет состояние.Чтобы зарегистрировать класс в качестве наблюдателя для головоломки, используйте методы addObserver и removeObserver.Вот определения для трех методов:
-(void) postNotificationName:(NSString *) aName object:(id)anObject userInfo:(NSDictionary *)aUserInfo;
-(void) addObserver:(id)observer selector:(SEL)aSelector name:(NSString *)aName object:(id)anObject;
-(void) removeObserver:(id)observer name:(NSString *)aName object:(id)anObject;
Вот пример кода, который можно использовать для вашей программы:
В вашем классе головоломки, в функции, которая изменяет состояние:
[[NSNotificationCenter defaultCenter] postNotificationName:@"puzzleChangedState" object:self userInfo:NULL]
// if you want to send out moreInfo, like other variables, use userInfo with a dictionary object
В ваших контроллерах, представлениях и т. Д. Везде, где вы хотите получить сообщение об изменении состояния головоломки:
//In your constructor or initialization method, register this class with the puzzle class
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(handlePuzzleChangedState:) name:@"puzzleChangedState" object:nil];
Это добавит ваш контроллер в NotificationCenter и, когда загадкакласс отправляет уведомление о "puzzleChangedState", будет вызван метод handlePuzzleChangedState: вашего контроллера.
Здесь handlePuzzleChangedState: function:
-(void) handlePuzzleChangedState:(NSNotification *) notification
{
//handle your puzzle state change here
}
Если вам нужна дополнительная помощь, вот документы1017 *http://developer.apple.com/library/mac/#documentation/Cocoa/Conceptual/Notifications/Introduction/introNotifications.html#//apple_ref/doc/uid/10000043i
Надеюсь, это сработает!