| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > iOS > Неправильный доступ к объектам? |
| Автор: Dimanoss 3.9.2013, 19:17 |
| В проекте есть класс Singleton , по задумке в нём должны лежать переменные, используемые разными классами. И вот что получается. Если обращаюсь из класса А, что-либо сохраняю, потом так же нормально читаю. Если же сохраняю классом А, а читать пытаюсь классом Б, получаю какую-то фигню. Например: NSPoint: {653, 72} или <CABasicAnimation: 0x71c0e40> . Если я правильно понимаю - каждый класс создаёт-таки свой экземпляр Singleton? Отсюда все безобразия? |
| Автор: Bitter 3.9.2013, 23:21 |
| Нет, синглтон на то и синглтон чтобы он создавался один единственный раз и использовался всеми. Читайте паттерны, хотя бы в википедии. |
| Автор: Dimanoss 4.9.2013, 11:42 | ||
тогда в чём дело? Неправильное объявление синлтона? у меня сейчас так выглядит:
|
| Автор: Bitter 4.9.2013, 13:24 |
| объявление выглядит вполне нормально, а в чем дело, так это знает только ХКод |
| Автор: Dimanoss 4.9.2013, 18:14 | ||
проблемы возникают при вызове
тут я получаю или белиберду, или крэш (EXC_BAD_ACCESS code=1). Функция testAllVars безобидная, всего лишь в логи выводит все нужные переменные. Причём проблемы возникают не при первом вызове, т.е. - первый раз всё нормально проходит... |
| Автор: Bitter 5.9.2013, 00:00 |
| ну видимо все ваши нужные переменные и приводят к крэшу |
| Автор: Dimanoss 5.9.2013, 12:48 |
| уверен, переменные в полном порядке. Первый раз же нормально всё, после первого обращения все переменные так в синглтоне и остаются... |
| Автор: Bitter 5.9.2013, 13:05 |
| Трудно что либо сказать по вашему вопросу, я ж не телепат. Бывает что BAD_ACCESS вызван обращением к удаленному из памяти объекту (то есть к зомби). Попробуйте включить зомби в проекте и посмотрите что выводится в консоли при крэше На картинке обратите внимание на галочку ![]() |
| Автор: Dimanoss 5.9.2013, 13:39 |
| -[CFString respondsToSelector:]: message sent to deallocated instance 0x2d6b7ff0 |
| Автор: Bitter 5.9.2013, 14:06 |
| это значит, что вы используете строку которая удалилась из памяти Вы используете ARC? |
| Автор: Dimanoss 5.9.2013, 14:32 | ||
никак нет-с. Постойте, на то ведь он и Синглтон, чтобы не удаляться.... |
| Автор: Bitter 5.9.2013, 14:56 |
| если вы не используете ARC, то вы безнадежно отстали. Вы не используете сторибоарды, вы не используете ARC, скажите еще что вы под DOS пишете. Еще раз - удаляется не синглтон, а какая-то переменная типа NSString. Какая это только вам известно. Ищите где у вас работа со строками, как вы их храните и тд |
| Автор: Dimanoss 5.9.2013, 15:22 | ||||||
Не, ну, конечно, мне бы застрелиться нужно, но это проблемы не решит. Я уже как-то оправдывался, почему я все последние причиндалы не использую. Ну вот сложилось так, последующие проекты (если будут) по другому буду делать. Добавлено через 5 минут и 52 секунды
Просто в классе Singleton объявлена переменная
|
| Автор: Bitter 5.9.2013, 15:36 |
| как вы инициализируете эту переменную? |
| Автор: Dimanoss 5.9.2013, 15:54 |
| пробовал и через сеттер, и напрямую. Даже self->userName вспомнил. Устанавливается-то она нормально, но после того, как другой ViewCotroller загружается, всё как-то тазиком прикрывается |
| Автор: Dimanoss 5.9.2013, 16:15 |
| чтоб не ходить около - весь проект (со всем мусором, само собой) http://sivoronov.de/sklad/files/SV.zip |
| Автор: Bitter 5.9.2013, 17:33 |
| и как в нем добиться краша? |
| Автор: Dimanoss 6.9.2013, 09:13 |
| итак, первый ВьюКонтроллер - синхронизация базы пользователей/клиентов. Затем он грузит Логин-Контроллер (ах, да - если не ковыряли БД - логин:aaa, пароль:bbb). Потом грузится контроллер, где выбирается клиент. До этого момента всё работает нормально. Затем, после выбора клиента из списка грузится контроллер со списком категорий. И вот тут уже программулина вылетает... |
| Автор: Bitter 6.9.2013, 11:21 |
| ну в общем у меня ваш логин пароль не подходит, честно говоря нет никакого желания разбираться почему |
| Автор: Dimanoss 6.9.2013, 11:33 |
| Ну что ж, и на том спасибо. Будем искать обходные пути... ("Так выпьем же за то, чтобы наши возможности всегда совпадали с нашими желаниями!") |