Работает в iPhone Simulator, но не на телефоне - PullRequest
0 голосов
/ 06 декабря 2010

Итак, у меня есть приложение, которое отлично работает на симуляторе, но не на реальном устройстве.

Во время выполнения выдает следующую ошибку:

2010-12-05 19:58:32.006 Sports[4668:307] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[UITableView isEqualToString:]: unrecognized selector sent to instance 0x800800'

Немного о структуре: у меня есть контроллер панели вкладок, первое представление - UINavigationController.

Представление есть UITableView. Одна вещь, которая может или не может быть связана с тем, что если я делаю @synthesize tableView; в контроллере табличного представления таблица остается пустой как на симуляторе, так и на телефоне (но не вылетает).

Если я достану это, он загружает правильные данные на симуляторе и вылетает на телефоне.

Где делегат / источник данных должен быть связан в Интерфейсном Разработчике? Я попытался связать его с «View» и «File's Owner» и создать новый «ViewController», но ни один из них не сработал.

Ответы [ 3 ]

2 голосов
/ 06 декабря 2010

И delegate, и dataSource должны быть связаны с File's Owner, который является классом контроллера представления, который объявляет табличное представление как IBOutlet; это должен быть тот же контроллер представления, который владеет файлом пера. Кроме того, этот контроллер представления должен реализовывать протоколы UITableViewDelegate и UITableViewDataSource.

Добавьте эту строку @synthesize обратно (если только вы не подклассифицируете UITableViewController, как указано в комментариях grahamparks!), Убедитесь, что эти соединения правильные, и, наконец, убедитесь, что вы объявили IBOutlet для табличного представления и правильно связанного между вашим классом и конструктором интерфейса.

1 голос
/ 06 декабря 2010

Нашли это!

Оказывается, на самом деле с этим не было никаких проблем. Проблема была в том, что поле даты в моей базе данных при запуске на моем телефоне всегда было ноль / ноль.

Почему? Потому что созданный NSDate объект никогда не инициализируется и остается на нуле.

Почему?

Потому что мой телефон работает 24 часа и неправильно проанализировал am и pm.

Извлеченные уроки!

0 голосов
/ 06 декабря 2010

Запустите ваше приложение с NSZombieEnabled, установленным в yes.См. http://www.cocoadev.com/index.pl?NSZombieEnabled для объяснения об этом и как его установить.Я думаю, что вы обнаружите, что приложение теперь будет генерировать исключение в симуляторе, сообщающее вам, что вы отправляете сообщение объекту, который был освобожден.

На основании полученного вами сообщения об ошибке яожидать, что виновником является объект NSString или NSMutableString.Если это NSString, то предупреждение о том, что NSString может совместно использоваться несколькими различными объектами, поэтому выяснить, где может быть дополнительная версия, может быть сложно.

Не бойтесь, инструменты в этом отношении чрезвычайно помогают.Вот ссылка, которая объясняет, как использовать Инструменты, чтобы точно определить, где ваш объект хранится и высвобождается, чтобы вы могли отследить, какая версия неуместна.http://www.markj.net/iphone-memory-debug-nszombie/

Удачи!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...