Подтвердить что ты не робот

Конфликтующие модификаторы распределенных объектов по типу возврата в реализации "release" в классе Singleton

Недавно я обновился до Xcode 4.2, и он начал давать мне столько семантических предупреждений с моим кодом...

один из них - "конфликтующие модификаторы распределенных объектов по типу возврата в реализации" release "в моем одноэлементном классе.

Я где-то читал о выпуске (oneway void); чтобы освободить это предупреждение, но как только я поместил это в свой код, я начал получать ошибку компиляции как "Дублировать объявление выпуска", не уверен, почему и если вы попытаетесь найти второе объявление, которое он показывает в этой строке

SYNTHESIZE_SINGLETON_FOR_CLASS (GlobalClass);

Обновление: это сообщение , в котором объясняется релиз - (oneway void);

как избавиться от этого предупреждения "конфликтующие модификаторы распределенных объектов по типу возврата в реализации выпуска"? и почему это происходит?

4b9b3361

Ответ 1

Сообщение, в котором вы ссылаетесь, содержит решение проблемы в названии и объясняет, почему это произошло с вами.

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

- (oneway void) release {}

в вашем .m файле, а не вносить изменения в существующие

- (void) release {

с дополнительным словом "oneway".

Вот почему вы получите "Дублировать объявление о выпуске". Да, это сбивает с толку, потому что это дублирующее определение, которое невидимо создает дублирующее объявление. Но я просто попытался сделать это неправильно, и я получаю это сообщение "duplicate declaration".

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

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

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

То, что Джонатан Гринспан должен сказать о том, чтобы указать как декларацию, так и определение, является широкодействующим (и, действительно, корень проблемы), но важно признать, что в этом конкретном случае декларация является кодом Apple, который имеет изменилось.

Итак, если он уже не ясен, измените строку, в которой XCode обнаруживает проблему с включением слова oneway.