В StackOverflow было несколько вопросов, где пользователи столкнулись с той же проблемой, что и я. Однако ни одно из их решений не подходит под мой случай. (См. здесь , здесь , здесь и здесь для некоторых вопросов SO, которые я прочитал, но не нашел полезным.)
В моем случае у меня есть NIB, у которого есть пара UIButton
с ассоциированным видом контроллера. Представление является относительно старым для моего проекта, и я смог использовать эти кнопки без каких-либо проблем до сегодняшнего дня. После внесения нескольких изменений кода, которые не были связаны с поведением кнопки, я столкнулся с ошибкой, которая вылетает из приложения, нарушает код функции main()
и выдает мне сообщение об ошибке EXC_BAD_ACCESS
всякий раз, когда я касаюсь любые кнопок на моем View.
Как или почему это могло произойти? Я фактически закомментировал почти весь функциональный код, особенно тот, который я изменил ранее сегодня, и я до сих пор не могу остановить возникновение ошибки.
В моем проекте используется автоматический подсчет ссылок, и я не видел эту ошибку раньше. Кроме того, я не модифицировал ни NIB, ни IBAction
, связанные с кнопками, поэтому я не вижу, что может вызвать это. Единственный способ устранить ошибку - отсоединить мои UIButton
s в моем NIB с IBAction
методами, определенными в моем заголовочном файле Controller View.
Единственный «уникальный» аспект моего сценария использования состоит в том, что я загружаю один или два экземпляра этого представления в другой контроллер вспомогательного представления. Количество загруженных экземпляров поврежденного представления зависит от количества объектов в массиве. Ниже приведен код, который я использую для создания экземпляров и загрузки этих представлений как подпредставлений другого представления.
//Called else where, this starts the process by creating a view that
//will load the problematic view as a sub-view either once or twice.
- (id)initWithPrimarySystemView:(SystemViewController *)svc
{
//First we create our parent, container view.
self = [super initWithNibName:@"ContainerForViewInstaniatedFromArrayObjs" bundle:nil];
if (self)
{
//Assign parent DataModel to local instance
[self setDataModel:((DataModelClass*)svc.DataModel)];
for (AnotherModel* d in DataModel.ArrayOfAnotherModels)
{
//Instantiate the SubViewController.
SubViewController* subsvc = [[SubViewController alloc]
initWithNibName:@"Subview"
bundle:nil
subviewPosition:d.Position ];
//Add the SubViewControllers view to this view.
[subsvc.view setFrame:CGRectMake((d.Position-1)*315, 0, 315, 400)];
[self.view addSubview:subsvc.view];
}
[self setDefaultFrame: CGRectMake(0, 0, 640, 400)];
}
return self;
}
Это работает отлично и раньше даже не вызывало никаких проблем с кнопками, которые были в связанном представлении, однако теперь все UIButton
сбои приложения при нажатии.
Функция инициализации для SubViewController, а также метод viewDidLoad
не содержат ничего, кроме стандартного автоматически генерируемого кода, который добавляется при создании нового ViewController.
Что я могу сделать, чтобы исправить или диагностировать эту проблему?