Мультимедиа

Mac копирование код ошибки 36. macOS Mojave отказывается устанавливаться с внешнего устройства

Mac копирование код ошибки 36. macOS Mojave отказывается устанавливаться с внешнего устройства

Всем доброго времени суток, уважаемые коты, дамы и господа.

Как-то давно (года два назад) я писал статью по установке хакинтоша на ваш Intel-Based ПК. Статья устарела как мир, но все таки полезное там что-то есть. Например порядок установки будет тем же, если вы замените установочный файл Sierra на High Sierra.

Сам я тем хакинтошем пользуюсь достаточно давно, пишу на нем код и вообще не чаю в нем души (за все два года была только одна проблема из-за кекста). В этой статья я расскажу, как обновить ваш хакинтош до High Sierra 10.13 и постараюсь ответить на некоторые возникшие вопросы с прошлой статьи.

Без лишних слов, начнем.

Для начала, у нас должна быть машина, работающая на хакинтоше. Надеюсь, у вас она есть. Если нет, то читайте в моей статье (кексты берем из этой).

Итак, как всем известно, начиная с High Sierra Apple перешла на новую файловую систему APFS заместо HFS. Это вызвало кучу вопросов, но не стоит кричать и падать в обморок, вы можете ее не использовать . Да-да, я не оговорился. Эту статью я пишу с моего хака, который крутится на HDD от Seagate, с файловой системой Apple Journal System (HFS). Магия - скажете вы. Нет, просто никто и не заставляет вас пользоваться APFS - отвечу я.

Шаг 1 . Обновите ваш кловер до последней версии (кловеры выпусков 3*** не поддерживают загрузку High Sierra). Скачать можно . Предварительно сделайте бэкапы всего EFI раздела
Шаг 2. . Скачайте файл обновления High Sierra из App Store. Да. Просто скачайте. Все.


Шаг 3 . Смонтируйте EFI раздел и восстановите старый Config.plist. Откройте его на редактирование.
Создайте патч ядра в Kernel and Kext Pathes:
Name: AppleUSBXHCIPCI
Find: 837d8c10
Replace: 837d8c1b
Comment: Change port limit from 15 to 21.
Match OS: 10.13.x

В этом же окне включите Kernel PM и AppleIntelCPUPM (поможет исправить Unsupported CPU в будущем)

Восстановите старые кексты, которые у вас были для Sierra 10.12 (если они были). Вы же сделали бэкапы, верно? Просто верните их в папку 10.12.

Для нормальной загрузки вам понадобятся эти кексты:
Lilu.kext
AppleALC.kext
USBInjectAll.kext
XHCI-200-series-injector.kext
IntelGraphicsFixup.kext (для intel GPU)
WhateverGreen.kext (для AMD GPU)
Так же не забудьте подрубить кекст для вашей сетевой карты, ага.

Так же нам потребуется драйвер APFS. Его нужно скачать и распаковать *.efi файл в папку Drivers64UEFI на EFI/CLOVER.
Скачать магию

Выгружаем необходимые кексты в папку с кекстами для 10.13 (не забудьте FakeSMC).

!!! ДЛЯ ПОЛЬЗОВАТЕЛЕЙ ВИДЕОКАРТ NVIDIA !!!
Перед установкой установите ПОСЛЕДНИЙ веб-драйвер следующим образом:
Измените следующие значения в Clover Configurator:
1. Boot - отключите nv_disable=1
2. Graphics - отключите Inject Intel
3. System Parameters - влючите Inject NVidia WEB
Сохраните файл и проверьте что он сохранен.

Включите SIP (System Integrity Protection):
Откройте Clover Configurator и откройте в нем ваш.plist
В RT Variables измените CsrActivateConfig на 0x00. Перезагрузите ваш хак. Проверить SIP можно командой csrutil status в терминале

Установите последний драйвер NVidia для вашей системы (можете просто попросить нвидию обновить их за вас в Системных настройках). Так же установите NVidiaGraphicsFixUP.kext

Для тех кто не успел обновить свои драйвера и обновился на ХайСиерру, либо если что-то не получилось

eugeneego пишет:
«Обладатели карт NVidia с web driver на 10.13.3 (версии драйвера 387.10.10.10.25.156/157) могут стролкнуться с жуткими постоянными лагами графики.
Решение: откатиться на драйвера для 10.13.2 (например на 378.10.10.10.25.106), пропатчив у них поддерживаемую версию ос (например с помощью webdriver.sh).»

Теперь открываем Программы. Выбираем «Установка macOS High Sierra». Он проделает свою магию и попросит вас перезагрузить компухтер, соглашаемся.

Проставьте в БИОСе загрузку с кловер-раздела в приоритет, потому что при обновлении она будет несколько раз перезагружать ваш компьютер.
В кловере выберете Install MacOS High Sierra from . Пойдет процесс обновления.

Если вы решили использовать APFS заместо HFS

Возможно, если система определит ваш SSD диск - она захочет переконвертировать его в APFS, не удаляя ваших файлов. В этом нет ничего страшного, просто предупреждаю, при этом переконвертирует она только системный раздел, остальные не тронет.
Для тех кто решил использовать APFS для «свежей» установки - НЕ ФОРМАТИРУЙТЕ весь диск в APFS, так как вы потеряете возможность доступа к EFI разделу.

Пойдет процесс обновления, который может растянуться до часу. Главное - терпение.

Спустя 60 минут счастья система установится и будет готова к работе (ну, так должно быть, по идее).

На этом все:)
Все вопросы пишите в комментарии или в личку в вк, отвечу по возможности . Всем котов:3

В нашей статье мы собираемся рассказать вам об известных на сегодняшний день багах в macOS 10.14 Mojave. Стоило Apple выпустить апдейт их операционной системы для модельного ряда Mac, iMac и MacBook, приносящий достаточно много нового, как в интернете стали появляться отзывы некоторых пользователей о багах, появившихся после установки данного обновления.

Как бы это ни было печально, но нужно констатировать факт, что это стандартная практика при выходе новой версии операционной системы, так что в случае столкновения с проблемой паники быть не должно. Далее мы расскажем о путях исправления самых известных на сегодняшний день багов в macOS 10.14 Mojave. В случае, если вашей проблемы нет в этом списке, то вам нужно оставить комментарий с ее описанием к этой записи, и в следующий постах мы постараемся ее описать и найти решение.

В самом начале разберем один из самых распространенных багов- так называемый баг нулевого дня macOS Mojave, с помощью которого могли быть украдены ваши личные данные. Проблема пока актуально, поэтому советуем добавить данную страницу в закладки, и после того, как выйдет обновление от Apple, устраняющее баг, мы сразу дополним эту статью решением.

Мы также будем добавлять сюда мануалы по избавлению от новых выявленных багов macOS Mojave, так что настоятельно рекомендуем добавить эту страницу в закладки своего браузера.

Проблема, возникающая на начальном этапе вызвана тем, что macOS Mojave попросту не хочет загружаться, у кого-то также появляется сообщение, гласящее, что «Не удалась загрузить macOS Mojave».

Другое окно, мешающее загрузке macOS Mojave содержит следующий текст: «Установка macOS не может продолжаться. Для установки требуется загрузка важного контента. Этот контент сейчас не может быть загружен. Попробуйте позднее.»

Сразу несколько факторов в состоянии вызвать этот баг. Например, в настоящий момент большое количество людей пробуют загрузить macOS Mojave. В таком случае, вам всего-лишь необходимо выждать определенное время и повторить попытку загрузки апдейта позднее. Также рекомендуется проверить доступность серверов Apple, чтобы удостовериться в их доступности.

Еще одной причиной неудачной загрузки операционной системы может служить нехватка места в системе. Для проверки объема свободного пространства перейдите меню Apple и щелкните «Об этом Mac».

Зайдите в «Хранилище», где вы и найдете информацию о свободном месте. Для загрузки необходимо иметь 12,5 ГБ, но если же вы производите апдейт с OS X Yosemite или более ранних версий, то нужно и того больше — 18,5 ГБ.

Не лишним будет перейти с Wi-Fi на старое доброе LAN подключение для того, чтобы обеспечить устойчивое соединение с интернетом на время обновления.

Если баги в процессе скачивания macOS Mojave не ушли, необходимо отыскать в системе скачанные файлы macOS 10.14, в частности файл с названием «Установить macOS 10.14» на вашем жестком диске. Удаляем эти файлы, перезагружаем Mac и повторяем попытку загрузки macOS Mojave.

Еще одним решением является открытие App Store, а именно раздела «Просмотреть мою учетную запись», в котором нужно удостовериться в том, что у вас нет «Незаконченных загрузок». Вероятно, вы сможете возобновить загрузку.

Ну и напоследок, попробуйте выйти из App Store, возможно, он возобновит скачивание.

Баги во время процесса установки macOS Mojave.

При багах в процессе установки macOS Mojave, сперва необходимо прочесть указания по загрузке и процессу установки MacOS 10.14 Mojave, в нем расписана последовательность действий, необходимых для процесса корректной установки macOS Mojave.

Первоначально необходимо убедиться, что ваше Mac устройство сможет получить обновление до macOS Mojave. Вот совместимые Mac устройства:

  • MacBook (версии начиная с 2015 года)
  • MacBook Air (версии начиная с 2012 года)
  • MacBook Pro (версии начиная с 2012 года)
  • Mac mini (версии начиная с 2012 года)
  • iMac (версии начиная с 2012 года)
  • iMac Pro (2017)
  • Mac Pro (версии 2013 года, 2010 и 2012 годов с Metal совместимым процессором)

В случае, если вы увидели ваш компьютер в этом списке и macOS Mojave загрузилась, но установка не начинается, вам необходимо найти на устройстве Mac файл «Установить macOS 10.14». Щелкнув на нем дважды вы начнете установку.

В том случае, когда процесс установки macOS Mojave прервался из-за недостатка пространства на диске, произведите перезагрузку вашего устройства и потом зажмите Control + R, после ее загрузки для входа в меню Recover. Нужно выбрать «Загрузка c диска» для обычной загрузки, и удалить все ненужные вам файлы.

При попытке освободить место для установки, помните про скрытые файлы Time Machine, они в состоянии занимать довольно внушительные объемы пространства.

После освобождения необходимого объема на диске можно пробовать еще раз.

При появлении ошибки по окончании процесса установки macOS Mojave, сопровождаемой информацией об ошибке, произведите перезагрузку Mac и зажмите Command + Option + R на клавиатуре, в этом случае на Mac запустится система восстановления через Интернет. Еще одно сочетание клавиш Shift + Option + Command + R.

Можно попытаться произвести загрузку Mac из безопасного режима и уже из него попытаться произвести установку macOS 10.14 Mojave.

macOS Mojave отказывается устанавливаться с внешнего устройства.

Некоторые пользователи заявляют, что Mojave отказывается устанавливаться с подключенного носителя, а напротив откатывает систему к предшествующей версии macOS.

Пользователи, заявившие о данном баге, высказывают свои опасения, что, возможно, вызвано это тем, что ваше переносное устройство подсоединено к Mac с использованием переходника USB-C. Советуем подсоединить ваше устройство напрямую к порту Thunderbolt 3 или использовать другой переходник.

Стоит попробовать предварительно установить High Sierra (предыдущую версию macOS) на съемный носитель с последующим обновлением его до Mojave.

Потерян доступ к App Store после установки macOS Mojave.

Определенное число пользователей жалуются на то, что они потеряли доступ к App Store после установки macOS Mojave. На официальном справочном сайте Apple есть список действий, которые помогут вам избавиться от этого бага.

Для начала откройте приложение KeyChain Access и перейдите в «System Roots». Вы увидите там запись «DigiCert High Assurance EV root CA». Дважды щелкните на ней, после чего откроется окно, в котором вам нужно нажать «доверять».

Также измените параметр «При использовании этого сертификата» с «Использовать системные настройки по умолчанию» на «Никогда не доверять».

Теперь перезагрузите устройство Mac и снова откройте KeyChain Access. Вернитесь в ту же директорию, в которой вы были ранее, и измените параметр «При использовании этого сертификата» назад на «Использовать Системные настройки по умолчанию».

После этих манипуляций доступ к App Store должен появиться.

Миниатюры файлов не показываются на рабочем столе.

Некоторые пользователи жалуются на то, что в результате апдейта до macOS Mojave миниатюры файлов на рабочем столе (вроде PDF и изображений) не отображаются.

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

Bluetooth не функционирует в macOS Mojave.

Очередной баг — это некорректно работающий Bluetooth на ноутбуке Mac с установленным апдейтом macOS Mojave.

Чтобы избавиться от бага откройте Поиск и выберите «Начать» в меню сверху, далее нужно нажать «Перейти в папку …». Далее ввести «/Library/Preferences».

Там вы найдете файл com.apple.Bluetooth.plist. Необходимо удалить этот файл или перенесите в другую папку, если не хотите его потерять, потом произведите перезагрузку Mac. После этого Bluetooth на ноутбуке должен заработать.

Ноутбук перестал включаться в результате апдейта до macOS 10.14 Mojave.

Когда в результате апдейта до macOS Mojave, ваше Mac устройство перестало запускаться, нужно произвести его перезагрузку и зажать сочетание кнопок Command+Option+P+R. Это действие сбросит предустановки NVRAM (энергонезависимое ОЗУ).

Держать кнопки нужно до полной перезагрузки компьютера, то есть появления второго по счету звукового сигнала. Как только вы услышали второй звуковой сигнал, клавиши можно отпустить. Настройки PRAM тоже сбросятся.

Из безопасного режима нужно провести запуск Disk Utility, что позволит вам убедиться в том, что включение после обновления macOS Mojave будет происходить в штатном режиме.

Работа mac заметно замедлилась в результате апдейта до macOS 10.14 Mojave.

Если вы заметили, что производительность вашего устройства упала в результате апдейта до macOS Mojave, то возможно это вызвано тем, что какие-то программы запускаются при загрузке системы. Если этих приложений большое количество то вы разумеется заметите замедление работы вашего устройства, но если это происходит в macOS 10.14 Mojave, то ситуация может быть еще хуже.

Для устранения этой проблемы вам потребуется отключить автозагрузку при включении Mac всех ненужных приложений.

Вам потребуется запустить меню Apple и перейти в «Системные настройки». Там, в окошке нужно зайти в «Пользователи»-«Группы» и выбрать «Элементы входа». Там выбираем программы, не требующие загрузки при запуске системы, и нажимаем на небольшой значок минуса внизу этого списка.

Еще стоит удостовериться, что для всех приложений установлены последний обновления. Проверить их наличие можно в App Store или на официальных сайтах этих приложений.

Также, как и в большинстве случаев, советуем произвести перезагрузку вашего Mac устройство, возможно, это сможет помочь. В случае, если перезагрузка не помогла, советуем вам закрыть все приложения, занимающие большой объем оперативной памяти. Посмотреть это можно при использовании Activity Monitor (in/Applications/Utilities). Там вы увидите программы и процессы, потребляющие наибольший объем CPU или RAM. Во вкладке CPU показаны запущенные процессы с отображением потребления CPU в режиме реального времени.

Для принудительного завершения процесса, нужно щелкнуть на нем в Мониторе активности, нажать на X левее от панели инструментов и ответить согласием на запрос о принудительном завершении работы.

В появившейся строчке введите /Library/Caches.

Поисковик перестал функционировать после апдейта до macOS 10.14 Mojave.

Некоторые пользователи заявили, что Поисковик не запускается или перестает отвечать на запросы в результате апдейта до macOS 10.14 Mojave.

При появлении данной проблемы, запустите Терминал и произведите такую команду:

~/Library/Preferences/com.apple.finder.plist

Нажмите кнопку Enter. Данный файл появится выделенным в Поисковике. Выберите файл и далее удалите его. После этого произведите перезагрузку Mac.

Поиск не обновляется при перемещении или удалении файлов.

Есть еще одна проблема поисковика, возникающая в macOS Mojave. В некоторых случаях он не отображает изменения файлов (например, перемещение или удаление файлов).

Если Поиск не обновляет информацию об изменениях в файлах, попробуйте выполнить описанные выше действия для исправления Поиска, если он перестает отвечать на запросы.

Если это не решает проблему, попробуйте загрузиться в безопасном режиме, а затем перезагрузить компьютер Mac в обычном режиме.

Не функционируют программы в macOS 10.14 Mojave.

Очередная проблема, о которой сообщают пользователи, это то, что после апдейта до macOS Mojave у них перестали запускаться некоторые приложения.

Наиболее часто данная ошибка возникает в том случае, если вы пользуетесь старыми приложениями. В случае, когда приложение, которым вы раньше пользовались перестало запускаться после апдейта до macOS 10.14 Mojave, для начала вам необходимо удостовериться, что для этого приложения установлены все новейшие обновления.

Для этого вам необходимо перейти на официальный сайт этого приложения. Там вы сможете найти актуальные версии для него и рекомендации для его корректного запуска.

Когда ваше программное обеспечение устаревает, оно может быть попросту несовместимо с новыми системами, такими как macOS Mojave. Если это так, то все, что вам остается это задуматься о приобретении обновленной версии или поиске альтернативного ПО.

Также macOS Mojave официально поддерживает 64-разрядные программы, поэтому, если ваша программа 32-разрядная вы увидите предупреждение, гласящее, что данная программа не оптимизирована для вашего Mac. В этом случае, советуем вам удостовериться, что вы используете именно 64-разрядную версию приложения для получения комфортного опыта использования macOS Mojave.

Для проверки того, какую версию, 32 или 64-разрядную, вы используете, нужно открыть меню Apple и нажать на «Об этом Mac». Выбрать «Системный отчет», далее в меню слева перейти в «Приложения». Там есть столбик «64-бит». У всех 64-разрядных приложений в этом столбике стоит «Да». Если там написано «Нет», нужно по возможности обновиться до 64-разрядной версии, или перейти на использование другого приложения, имеющего 64-битную версию.

Баги аккумулятора в macOS Mojave.

Некоторые пользователи заметили уменьшение времени автономной работы после обновления до macOS Mojave?

В этом случае вам необходимо установить, какие процессы тратят заряд аккумулятора в macOS Mojave. Для этого откройте Поиск, далее зайдите в «Приложения»> «Утилиты»> «Монитор активности»> «Энергопотребление».

Там будет находиться график, отображающий то, сколько заряда отнимают используемые вами программы. Если вам кажется,что значение большое, вы можете проверить наличие обновлений для этих программ, быть может в них оптимизировано энергопотребление.

Еще один выход — это использовать альтернативные программы с меньшим энергопотреблением.

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

Проводной и беспроводной интернет отказываются функционировать после установки macOS 10.14 Mojave.

В случае возникновения проблем с выходом в интернет с использованием проводного или беспроводного соединения после установки macOS 10.14 Mojave, попробуйте запустить компьютер Mac в безопасном режиме и проверьте возможность подключения.

Если подключиться удалось, это свидетельствует о неполадках с ранее установленной программой или расширением. Удостоверьтесь в том, что установлены все свежие обновления для драйверов и программ, и следите за будущими обновлениями от Apple.

Надеемся, что с помощью этих хитростей в настройке, вам удалось добиться максимальной производительности после установки macOS 10.14 Mojave.

Нашли опечатку? Выделите текст и нажмите Ctrl + Enter

Иногда пользователи Mac при копировании файлов в Finder могут встречаться с ошибкой Error code -36. После получения сообщения с таким кодом процесс копирования останавливается и не возобновляется. Сегодня мы расскажем о паре простых шагов, которые уберегут вас от Error code -36.

Полный текст сообщения об ошибке выглядит следующим образом:

The Finder can’t complete the operation because some data in “Имя файла” can’t be read or written. (Error code -36).

Чаще всего проблемный файл, вызывающий ошибку, имеет расширение.DS_Store, но Error code -36 может появляться и в других, более редких ситуациях. Лучше всего решается эта проблема с помощью терминала и специальной команды dot_clean.

1. Запустите Терминал.

2. В командной строке наберите следующую команду:

dot_clean /Путь к директории , которую необходимо скопировать.

3. После завершения команды папку вновь можно будет скопировать без проблем в Finder.

Например, если вы желаете скопировать бэкапы по адресу ~/Documents/FileBackups/ вам необходимо выполнить команду:

dot_clean ~/Documents/FileBackups/

В очень редких ситуациях, например, при копировании файлов между двумя компьютерами, внешним накопителем и в других подобных ситуациях, Error code -36 может появляться, несмотря на введенную команду. В этом случае мы рекомендуем вам удалить все файлы с расширением.DS_Store с вашего компьютера Mac.

Корпорация Apple выпускает не только удобные и красивые, но и простые в использовании продукты, многие из которых освоит даже ребёнок. Однако сочетание искусства и технологий, с лёгкой руки Стива Джобса вошедшее в нашу жизнь, само по себе не может гарантировать стопроцентной защиты от пользовательских недоразумений. Специально для таких случаев и существует наша рубрика Genius, в которой мы разбираем не требующие «хирургического вмешательства» вопросы.

В первом вопросе, поступившем в Twitter от постоянного читателя Antonik1983 , речь идёт об уведомлениях и их влиянии на самый спорный параметр современной техники — автономность.




Показатель «Блокировка и «Домой», как это видно из названия, отражает время использования гаджета не только на экране приложений или в меню «Настройки», но и в режиме блокировки. Нюанс, который следует прояснить, заключается именно в последнем. Дело в том, что каждое уведомление, приходящее на устройство, по умолчанию включает его дисплей. Если таких событий насчитывается много, что при современных сценариях использования не редкость, вышеупомянутый показатель будет расти, а время автономной работы, соответственно — сокращаться. Ваш покорный слуга также сталкивался с этой проблемой, а решить её оказалось очень просто. Для этого переходим в меню «Настройки» и выбираем пункт «Уведомления», в котором выбираем приложения и переводим для них переключатель «На заблокированном экране» в положение «выключено». При этом звук события всё равно будет проигрываться, а само уведомление отобразится после разблокировки устройства. Каким именно программам не следует беспокоить «спящий» дисплей — вещь сугубо индивидуальная, однако в первую очередь стоит обратить внимание на пункт «Почта». Здесь можно настроить показ уведомлений только для списка VIP-отправителей, что значительно сокращает время работы экрана, если вам приходит множество электронных писем.


Если вы не относитесь к самым заядлым «мобильным» игрокам, следующими «под нож» можно смело отправлять игровые приложения. Количество присылаемых ими уведомлений зачастую превышает все мыслимые пределы, поэтому эффект от их тонкой настройки заметен практически сразу. Ну а для пользователей iPhone в iOS 9 предусмотрен временный вариант — просто положите iPhone дисплеем вниз, и уведомления перестанут включать экран. Функция поддерживается на всех iPhone, начиная с 5s, а для её корректной работы требуется включить опцию «Калибровка учёта движения» в группе «Службы геолокации» раздела «Конфиденциальность» меню «Настройки».

Второй вопрос касается работы с Finder — встроенным файловым менеджером macOS.

В силу различной логики интерфейсов переход с той же Windows (и наоборот) редко проходит безболезненно, и в бытность свою новичком автор и сам задавал подобные вопросы. Для того чтобы быстро создать ярлык, переходим в содержащую файл папку (в случае с приложениями можно выбрать пункт «Открыть» из контекстного меню нажатием правой кнопки мыши на значке в Dock ). Затем обращаемся к контекстному меню самого файла, где выбираем пункт «Создать псевдоним» (Make Alias ). Последний шаг — перенести ярлык из открытого каталога на Рабочий стол.


Последний вопрос связан с неполадками при работе с медиатекой Фото в macOS.


В подобных случаях проблема может заключаться в накопившихся ошибках в файловой системе. На помощь приходит любимое средство «маководов» — программа Терминал. Находим её в поиске Spotlight и вводим следующую команду:

dot_clean /АдресМедиатеки

Не забывайте указывать полный путь к медиатеке, внимательно проверяя накопитель, логический раздел и подкаталог, в котором она располагается. По умолчанию медиатека хранится на диске HD в соответствующем имени пользователя подкаталоге «Изображения» папки «Пользователи» (Users ). Кстати, если у вас возникли неполадки с самой медиатекой, рекомендуем попробовать

Приятно, что некоторые проблемы поддаются решению даже в самых домашних условиях. Если вас беспокоит какая-либо из них, обязательно задавайте вопрос в комментариях ниже (или

Привет! В этой статье я постараюсь рассказать о том, как можно облегчить себе жизнь при отладке iPhone- и Mac-приложений. Речь пойдет об отладке исключения EXC_BAD_ACCESS, одного из самых неприятных в природе.

Исключение EXC_BAD_ACCESS возникает, когда мы пытаемся послать сообщение объекту, который уже был освобожден (released). Ситуация обычно осложняется тем, что к тому моменту, когда выскакивает ошибка, стэк вызова уже не содержит информацию, которая могла бы нам помочь. То есть, непонятно, какой конкретно объект был освобожден. И, тем более, непонятно, в каком месте кода он был освобожден:). Еще веселее становится, если приложение многопоточное.

К счастью, ребята из Apple приложили все усилия, чтобы нам помочь. Они создали класс-заглушку NSZombie . Если включить его поддержу (как это сделать - расскажу ниже), то после удаления каждого объекта на его месте (т.е. по его адресу в памяти) будет жить «зомби» и принимать сообщения, что позволит при отладке определить, какой объект был освобожден и устранить ошибку.

Итак, начнем. В один прекрасный день ваше iPhone- или Mac-приложение начало вылетать и в консоли отладчика вы видите следующее сообщение:

Program received signal: “EXC_BAD_ACCESS”.

И, собственно, больше ничего. Стэк вызова, скорее всего, тоже вам ничем не помог.

В окне Groups & Files (слева в xCode ) найдите ветку Executables . Щелкните правой кнопкой на исполняемом файле вашего приложения и в выпадающем меню выберите пункт Get Info . В появившемся окне откройте вкладку Arguments и добавьте две переменные окружения: NSZombieEnabled и MallocStackLoggingNoCompact . Установите NSZombieEnabled значение YES , а MallocStackLoggingNoCompact - 1 . Как это должно выглядеть, показано на скриншоте:

Теперь запустите ваше приложение и повторите шаги, необходимые для воспроизведения ошибки. В консоли отладчика вместо сообщения о EXC_BAD_ACCESS вы должны увидеть что-то подобное:

2010-01-25 14:35:24.840 MyApplication *** -: message sent to deallocated instance 0x42a5060

Это значит, что когда-то у вас жил объект класса CFString по адресу 0x42a5060 . Он уже был освобожден (released), а ваша программа не унимается и пытается послать ему сообщение retain . Осталось найти этот объект и найти в коде место, где был вызван лишний release . Либо не вызван retain , зависит от конкретной ситуации:)

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

Shell malloc_history 1393 0x42a5060

Вместо 1393 вам следует вписать свой идентификатор процесса (PID). Его вы можете подсмотреть в консольном сообщении об ошибке сразу после имени приложения. А вместо 0x42a5060 впишите адрес объекта, который был освобожден (тоже можно посмотреть в сообщении об ошибке).

В результате вашим глазам предстанет страшная картина вроде этой:

Не пугайтесь, все не так страшно, как может показаться на первый взгляд. Ближе к низу ищите имена классов и методов, которые присутствуют в вашем коде. То есть, написаны вами. Где-то там и притаился злочастный вызов release . Ищите и исправляйте.

P.S. Краем глаза я где-то прочитал, что можно отлавливать подобные ошибки с помощью Instruments / ObjectAlloc. Был бы очень признателен, если бы кто-то дал мне на водку… Ой, наводку