На StackOverflow было несколько вопросов, когда пользователи столкнулись с той же проблемой, что и я. Однако ни одно из их решений не подходит для моего случая. (См. здесь, здесь, здесь и здесь для некоторых вопросов SO, которые я читал, но не нашел полезным.)
В моем случае у меня есть NIB с парой UIButton
и связанным с ним представлением контроллера. Представление относительно старо для моего проекта, и я мог без проблем использовать эти кнопки до сегодняшнего дня. После внесения нескольких изменений в код, не связанных с поведением кнопки, я столкнулся с ошибкой, которая приводит к сбою приложения, разрыву кода в функции main()
и выдаче сообщения об ошибке EXC_BAD_ACCESS
всякий раз, когда я касаюсь любого strong> кнопок на моем View.
Как или почему это может произойти? На самом деле я закомментировал почти весь функциональный код, особенно тот, который я модифицировал ранее сегодня, и я до сих пор не могу предотвратить возникновение ошибки.
В моем проекте используется автоматический подсчет ссылок, и я раньше не видел этой ошибки. Кроме того, я не модифицировал NIB и IBAction
, связанные с кнопками, поэтому не понимаю, что могло бы вызвать это. Единственный способ остановить ошибку — отвязать мои UIButton
s в моем NIB от IBAction
methods, определенных в моем заголовочном файле представления контроллера.
Единственный «уникальный» аспект моего варианта использования заключается в том, что я загружаю один или два экземпляра этого представления в другом подчиненном контроллере представления. Количество загружаемых экземпляров разбитого представления зависит от количества объектов в массиве. Ниже приведен код, который я использую для создания и загрузки этих представлений в качестве подвидов другого представления.
//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.
Что я могу сделать, чтобы исправить или диагностировать эту проблему?