Генератор отчетов катастрофического отказа для [закрытого] приложения Какао

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

Одна причина использовать опцию A состоит в том, потому что классы, вероятно, будут иметь частные переменные, которые Вы будете использовать в операторе блокировки. Намного легче просто использовать один объект, который Вы используете для блокировки доступа ко всем ним вместо того, чтобы пытаться использовать более прекрасные гранулярные блокировки для блокировки доступа только к участникам, в которых Вы будете нуждаться. При попытке пойти с более прекрасным гранулярным методом, необходимо будет, вероятно, взять, несколько привязывают некоторые ситуации, и затем необходимо удостовериться, что Вы всегда берете их в том же порядке избежать мертвых блокировок.

Другая причина использовать опцию A состоит в том, потому что возможно, что ссылка на m_Hash будет доступна вне Вашего класса. Возможно, у Вас есть общественная собственность, которая предоставляет доступ к нему, или возможно Вы объявляете его, как защищено, и производные классы могут использовать его. В любом случае, как только внешний код имеет ссылку на него, возможно, что внешний код будет использовать его для блокировки. Это также открывает возможность мертвых блокировок, так как у Вас нет способа управлять или знать то, что приказывает, чтобы блокировка была принята.

9
задан jbrennan 10 July 2009 в 17:46
поделиться

7 ответов

У меня был большой успех с UKCrashReporter . Код прост и легко модифицируется в соответствии с L&F вашего приложения.

PLCrashReporter выглядит интересно.

Я бы не стал использовать Smart Crash Reporter только потому, что многие пользователи (справедливо) этого не делают. оцените, как ваше приложение внедряет код в неожиданные места, и это мне кажется хрупким (возможно, опасным для использования в выпущенном приложении) подходом.

3
ответ дан 4 December 2019 в 21:11
поделиться

Другие хорошо ответили на вопрос и указали на хороший пример кода.

Самостоятельно написать код довольно просто. Как правило, стратегия такова:

  • поймать соответствующие сигналы
  • запустить отдельное приложение для отчетов о сбоях, которое находится внутри пакета вашего приложения.
  • приложение для отчетов о сбоях затем находит последнюю запись в журнале сбоев для вашего приложения и отправляет ее вам через любой желаемый метод (POST, электронная почта и т. д.)
2
ответ дан 4 December 2019 в 21:11
поделиться

Я видел, как несколько приложений используют Smart Crash Reporter или, возможно, какой-то его вариант. Когда ваше приложение вылетает, оно вызывает обычное диалоговое окно сбоя Apple с дополнительной кнопкой с надписью «Отправить и Apple, и вам»

1
ответ дан 4 December 2019 в 21:11
поделиться

I've also rolled my own: SFBCrashReporter

There is a small post on my blog about it.

2
ответ дан 4 December 2019 в 21:11
поделиться

Я бы уклонился от Smart Crash Reporter по той единственной причине, что он не понравится многим пользователям и является хорошим способом получить плохую репутацию в прессе о вашем приложении (заслуженно или нет) PLCrashReporter или UKCrashReporter http://zathras.de/angelweb/sourcecode.htm они дадут некоторые идеи о том, что делать и как это делать способами, которые не внедряются в другое пространство кода.

1
ответ дан 4 December 2019 в 21:11
поделиться

Другой вариант - Breakpad от Google. Он имеет оболочку фреймворка Cocoa и совместим с сервером Mozilla Socorro . Он используется Firefox, а фреймворк Cocoa используется в текущих бета-версиях Camino.

1
ответ дан 4 December 2019 в 21:11
поделиться

Я использую ILCrashReporter , и он отлично работает. Этот метод основан на электронной почте, поэтому он хорошо работает с Fogbugz .

0
ответ дан 4 December 2019 в 21:11
поделиться