Один из возможных шаблонов, который вы могли бы использовать, это делегат.
Вы можете определить AuthenticatorDelegate
протокол и ваш LoginController
соответствует ему. Что-то вроде:
@protocol AuthenticatorDelegate
- (void) authenticationSuccessful;
- (void) authenticationFailedWithError:(NSError *)error
@end
@interface Authenticator : NSObject
{
...
id <AuthenticatorDelegate> delegate;
}
@property (assign) id <AuthenticatorDelegate> delegate;
@end
ваш LoginController
будет объявлен как
@interface LoginController : UIViewController <AuthenticatorDelegate>
...
и при его инициализации вы устанавливаете делегата
- (void)awakeFromNib {
self.authenticator = [[Authenticator alloc] init];
self.authenticator.delegate = self;
}
и затем, когда ваши Authenticator
объекты получат результат, вы просто вызываете соответствующий метод для делегата.
Конечно, это только одна из возможностей. Другие подходы могут использовать кодовые блоки или пару целевой / селектор.