У меня есть сбои, возникающие при нажатии на UITextField. У меня есть два контроллера, скажем, A и B. Когда я показываю контроллер B модно в контроллере A и нажмите на UITextField, все в порядке. Затем я увольняю диспетчер B и представляю его снова. На этот раз, когда я нажимаю на ошибку UITextField. Когда я включил NSZombie в свою схему, появляется сообщение об аварии - -[UITextField textInputView]: message sent to deallocated instance
.UITextField textInputView сообщение, отправленное на освобожденный экземпляр
У меня нет UITextFieldDelegate
на UITextField. Когда я пытался отлаживать инструменты -> Zombies, нет исходного кода (недоступен), когда я дважды щелкаю строку релизов/сохранения истории.
0 0 Моя оценка Конфигурация здания is Отладка. Версия Xcode - 7.2.1. Сбои возникают только на iOS 8. iOS 9 в порядке.
PS: Когда я пытаюсь повторно symbolicate приложение, я вижу, что есть одна отсутствует система Каркасыdyld. Затем нажмите Найдите и откройте dsym файл моего отладочного приложения, но ошибка возникает с сообщением «Указанный путь не нашел dSYM для любой из выбранных библиотек».
ОБНОВЛЕНИЕ 1:
Контроллер:
#import <UIKit/UIKit.h>
@interface A : UIViewController
@end
#import "A.h"
#import "RoundedButton.h"
@interface A()
@property (weak, nonatomic) IBOutlet RoundedButton *signInButton;
@end
@implementation A
- (void)viewDidLoad {
[super viewDidLoad];
[self configUI];
}
- (void)viewWillAppear:(BOOL)animated {
[super viewWillAppear:animated];
[[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleDefault animated:YES];
[self.navigationController setNavigationBarHidden:YES animated:YES];
}
- (UIStatusBarStyle)preferredStatusBarStyle {
return UIStatusBarStyleDefault;
}
- (void)didReceiveMemoryWarning {
[super didReceiveMemoryWarning];
// Dispose of any resources that can be recreated.
}
#pragma mark - Segue
- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {
if ([segue.identifier isEqualToString:@"signIn"]) {
}
}
#pragma mark - Config UI
- (void)configUI {
// setup ui
}
- (void)dealloc {
NSLog(@"%@ deallocated", NSStringFromClass([self class]));
}
@end
В Контроллер:
#import <UIKit/UIKit.h>
@interface B : UIViewController
@end
#import "B.h"
#import "SKFormTextField.h"
#import "RoundedButton.h"
@interface B()
@property (weak, nonatomic) IBOutlet UITextField *textField;
@property (weak, nonatomic) IBOutlet RoundedButton *signInButton;
@end
@implementation B {
SKAlertView *alertView;
}
- (void)viewDidLoad {
[super viewDidLoad];
[self configUI];
}
- (void)viewWillAppear:(BOOL)animated {
[super viewWillAppear:animated];
}
#pragma mark - Actions
- (IBAction)cancelSignIn:(id)sender {
[self dismissViewControllerAnimated:YES completion:nil];
}
#pragma mark - Config UI
- (void)configUI {
self.navigationController.navigationBarHidden = YES;
self.textField.secureTextEntry = true;
self.textField.autocorrectionType = UITextAutocorrectionTypeNo;
}
- (void)dealloc {
NSLog(@"%@ deallocated", NSStringFromClass([self class]));
}
@end
ОБНОВЛЕНИЕ 2:
Когда я звоню UITextField
, как self.textField.text = @"Hello, World!";
, нет аварии. Только когда я панорамирую/прикасаюсь к UITextField
или звоню [self.textField becomeFirstResponder];
, он падает.
Был ли у вас сильная ссылка на текстовое поле B? И вы пытались установить делегат текстового поля на нуль в dealloc B? – Lumialxk
Создаете ли вы какие-либо соединения с вашим 'UITextField' в контроллере A? – sschale
Нет, '@property (слабый, неатомный) IBOutlet UITextField * textField;' и никаких подключений с контроллером нет ** A ** –