Как я разрешаю ошибки EXC_BAD_ACCESS, с которыми встречаются в разработке iPhone

Если вы используете Python 3.6+, хорошим вариантом будет f-strings:

f'{115:,.2f}'
f'{4224:,.2f}'

Если 4224 на самом деле строка (возможно из-за запятой), вам нужно преобразовать ее на номер до f"{int('4,224'.replace(',','')):,.2f}"

15
задан Kevlar 3 March 2009 в 18:14
поделиться

6 ответов

Ваш код показывает серьезное отсутствие знаний того, как управление памятью работает в Objective C. В дополнение к ошибкам EXC_BAD_ACCESS Вы получаете, неподходящее управление памятью также вызывает утечки памяти, которые, на небольшом устройстве как iPhone, могут привести к случайным катастрофическим отказам.

Я рекомендую дать этому чтение thorogh:

Введение в руководство по программированию управления памятью для какао

8
ответ дан 30 November 2019 в 23:59
поделиться

Одна вещь, которая помогает мне много, состоит в том, чтобы иметь точку останова на objc_exception_throw. Каждый раз, когда я собираюсь бросить исключение, я поразил эту точку останова, и я могу отладить, создают резервную копию цепочки стека. Я просто уезжаю, эта точка останова включила все время в моих проектах iPhone.

Чтобы сделать это, в XCode переходит к близости нижняя часть левой панели "Группы и Файлы" и находит "Точки останова". Откройте его и нажмите на Project Breakpoints и в области детали (вершина), Вы будете видеть, что синее поле маркировало "Double-Click for Symbol". Дважды щелкните по нему и введите "objc_exception_throw".

В следующий раз, когда Вы выдаете исключение, Вы остановитесь и в отладчике, можно идти, создают резервную копию цепочки стека к коду, который вызвал исключение.

10
ответ дан 30 November 2019 в 23:59
поделиться

Определенно дайте правилам управления памятью быстрый обзор. Ничто не выскакивает, который вызвал бы ошибку, которую Вы получаете, но Вы пропускаете все те объекты Ваше выделение. Если Вы не понимаете сохранить/выпустить шаблон, возможности существует другое пятно в Вашем коде, где Вы не сохраняете объект правильно, и это - то, что вызывает ошибку EXC_BAD_ACCESS.

Также обратите внимание, что NSString имеет методы для контакта с путями файловой системы, Вам никогда не придется волноваться о разделителе самим.

1
ответ дан 30 November 2019 в 23:59
поделиться

Эти ошибки происходят, когда Вы неумело управляете памятью (т.е. объект выпускается преждевременно или подобный),

Попытайтесь делать что-то как следующее..

UIImage *myImage = [[UIImage alloc] initWithContentsOfFile:path];
return [myImage autorelease];

Я провел много времени, экспериментируя при понимании с понятием выпуска/автовыпуска. Иногда сохранить ключевое слово должно играться также (хотя, вероятно, не в этом случае)

Другая опция могла быть просто путем, не существует или не может быть считан из?

0
ответ дан 30 November 2019 в 23:59
поделиться

Возможно, initWithContentsOfFile не берет параметр пути? Обзор вокруг в различных init методах для UIImage, я думаю, что существует другой для принятия пути.

Там также могло бы быть что-то более необычное, необходимо ли сделать для того, чтобы сделать путь? Я не забываю делать что-то с "пакетами"? Извините, что был так неопределенен, это - все, что я помню бесцеремонно.

-1
ответ дан 30 November 2019 в 23:59
поделиться

возьмите наклонную черту от пути и удостоверьтесь, что это находится в проекте. не имеет значения, находится ли это в том dir, но это должно быть добавлено к проекту для Вас получить доступ к нему.

-2
ответ дан 30 November 2019 в 23:59
поделиться