Я получаю следующую ошибку:
2009-10-13 17:13:51.708 MyApp[7467:20b] * Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '* -[NSCFSet contactsButtonPressed:]: unrecognized selector sent to instance 0x4c27330'
Вы, вероятно, недооцениваете тот объект вашего контроллера, который должен получить это сообщение действия. Добавьте вызов NSLog в метод контроллера dealloc
; вы, вероятно, обнаружите, что он заблокирован, прежде чем вы ожидаете.
Тогда возникает вопрос: кто должен владеть этим контроллером? Затем убедитесь, что все владельцы сохранили его.
Если вы держите контроллер в свойстве, убедитесь, что вы действительно используете это свойство. Распространенной ошибкой является запись myController = theController
, которая обходит свойство и присваивает непосредственно переменной экземпляра вместо self.myController = theController
(синтаксис доступа к свойству, неявное сообщение о доступе) или [self setMyController:theController]
(явный синтаксис сообщения).
Кроме того, если вы реализовали собственные средства доступа для свойства (особенно setMyController:
), убедитесь, что ваш установщик освобождает старый объект и сохраняет новый. Конечно, это предполагает, что у вас есть причина для реализации вашего собственного средства доступа; обычно вам просто нужно @synthesize
свойство и позволить компилятору написать средство доступа для вас.