Я получил эту ошибку, когда я случайно изменил установку сборки идентификационных данных подписывания кода в цели, а не уровне проекта. Удостоверьтесь, что Вам ввели корректную информацию на уровне проекта (получите информацию о проекте, а не цель.), Если Вы изменили целевые настройки сборки, попытайтесь удалить значения оттуда. Цель тогда наследует установку проекта.
я также сделал бы "чистый все", затем вышел бы из XCode, удалил бы все из папки сборки и попытался бы сделать другую сборку. (Это - прием вуду XCode, который, кажется, решает много проблем подписывания кода.)
self.object = nil
вызывает ваш установщик, который освобождает старое значение, устанавливает член в nil
и, возможно, выполняет другие действия (это метод , поэтому он мог делать все, что угодно). Часть этого "чего угодно" потенциально опасна; см., например, этот вопрос .
[освобождение объекта]
освобождает старое значение, но оставляет член в виде теперь болтающегося указателя, что является хорошим рецептом для ошибок. В dealloc
это не имеет особого значения, поскольку сам указатель тоже скоро исчезнет, но в любом другом случае очень плохая идея освобождать член, не устанавливая для него значение nil
.
(Кстати, вы никогда не должны предполагать, что освобождение объекта дает ему счетчик ссылок 0. Он освобождает вашу ссылку, но другие объекты все еще могут иметь ссылки на него.)