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

Выпуск метода Singleton вызывает предупреждение?

В моем методе release singleton я ничего не делаю:

-(void) release {
  //A whole lot of nothing.
}

Но он вызывает это предупреждение:

Предупреждение: конфликтующие модификаторы распределенных объектов по типу возврата в реализации 'release'

Я googled и видел, что у других такая же ошибка, но никаких объяснений предупреждения. Кто-нибудь знает, что такое предупреждение?

4b9b3361

Ответ 1

Вам нужно объявить его oneway.

- (oneway void) release {}

oneway - это ключевое слово, используемое с распределенными объектами, чтобы указать, что вызов можно выполнить асинхронно. Поскольку заголовок NSObject использует его, когда он объявляет метод release, вы также должны его использовать. Это не повлияет на вашу программу, если вы не используете распределенные объекты, но она будет удовлетворять компилятору.

Ответ 2

В NSObject.h определение метода release возвращает a oneway void.

Ключевое слово oneway используется для распределенных объектов.

Поскольку Xcode4.2 и LLVM, проверки более сильные, и если они были приняты предыдущими версиями Xcode или gcc, теперь вам нужно добавить это ключевое слово oneway, чтобы компилятор LLVM не предупредил об этом.

-(oneway void) release { /* do nothing */ }

У вас не будет никакого инцидента с вашим кодом.