При реализации UITextFieldDelegate в моем классе ViewController возникает следующая ошибка при вводе первого символа в текстовое поле:
-[MyViewController respondsToSelector:]: message sent to deallocated instance...
Итак, я попытался создать отдельный класс (наследующий только NSObject) и реализовать UITextFieldDelegate. Угадайте что, это сработало отлично. Тем не менее, это создает некоторые другие проблемы, так как мне приходится делать много отвратительного общения между классами, которого я хотел бы избежать. Вот соответствующие части моего кода делегата приложения:
@interface RMSAppDelegate : NSObject <UIApplicationDelegate,
UITabBarControllerDelegate>
@property (nonatomic, retain) UIViewController* myViewController;
@end
@implementation MyAppDelegate
@synthesize myViewController;
- (BOOL)application:(UIApplication *)application
didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
myViewController = [[MyViewController alloc]
initWithNibName:@"MyView" bundle:nil];
[self.window setRootViewController:myViewController];
[self.window makeKeyAndVisible];
return YES;
}
@end
.. и вот что отображается:
@interface MyViewController : UIViewController <UITextFieldDelegate>
@property (nonatomic, retain) IBOutlet UITextField* pinTextField;
- (void)viewDidLoad;
@end
@implementation MyViewController
@synthesize pinTextField;
- (void)viewDidLoad {
// DOES NOT WORK (WHY?)
//[pinTextField setDelegate:self];
// WORKS, BUT I'D LIKE TO AVOID
[pinTextField setDelegate:[[[MyTextFieldDelegate alloc] init] autorelease];
[pinTextField becomeFirstResponder];
[super viewDidLoad];
}
@end
И, пожалуйста, если вы видите какой-либо код (даже не по теме), который я мог бы сделать лучше, оставьте комментарий.