Я пишу приложение, которое должно взаимодействовать с различными бэкэнд-системами. Я решил использовать протокол, чтобы абстрагировать свои бэкэнд-классы. Я создал перо LoginViewController, которое содержит ссылку «Внешний объект» типа «NSObject», и подключил его к выходу systemDelegate в моем LoginViewController.
@interface LoginViewController : UIViewController {
}
@property (nonatomic, retain) IBOutlet UITextField *usernameTextView;
@property (nonatomic, retain) IBOutlet UIImageView *captchaImageView;
@property (nonatomic, retain) IBOutlet UITextField *captchaTextView;
@property (nonatomic, retain) IBOutlet NSObject <BackEndSystemDelegate> *systemDelegate;
- (IBAction) submitCaptcha:(id) sender;
- (IBAction)dismissKeyboard: (id)sender;
- (IBAction) animateViewUp: (id) sender;
- (IBAction) animateViewDown: (id) sender;
- (void) animateViewOnYAxis: (int) offset;
- (void) loadCaptchaImage;
@end
Я создаю экземпляр LoginViewController в моем делегате приложения, затем пытаюсь загрузить перо со ссылкой на внешний объект. Мой код вызывает loadNibNamed
и вылетает без трассировки стека. Я не достигаю утверждений NSLog после вызова:
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
NSObject <BackEndSystemDelegate> *systemDelegate = [[ACMEBackEndSystemDelegate alloc] init];
// Init LoginView, and load nib with systemDelegate
self.viewController = [[LoginViewController alloc] init];
NSDictionary *proxies = [NSDictionary dictionaryWithObject:systemDelegate forKey:@"systemDelegate"];
NSDictionary *options = [NSDictionary dictionaryWithObject:proxies forKey:UINibExternalObjects];
NSArray *toplevelobjects = [[NSBundle mainBundle] loadNibNamed:@"LoginViewController"
owner:self.viewController
options:options];
if (toplevelobjects) {
NSLog(@"toplevelobjects is nil");
} else {
NSLog(@"toplevelobjects count %d", [toplevelobjects count]);
}
NSLog(@"Controller: %@, View: %@", viewController, viewController.view);
// Add the view controller's view to the window and display.
[window addSubview:viewController.view];
[window makeKeyAndVisible];
return YES;
}
Я затрудняюсь понять это. Любая помощь будет оценена.
Спасибо,
Дж Гарсия