Выпуск метода Singleton вызывает предупреждение?
В моем методе release singleton я ничего не делаю:
-(void) release {
//A whole lot of nothing.
}
Но он вызывает это предупреждение:
Предупреждение: конфликтующие модификаторы распределенных объектов по типу возврата в реализации 'release'
Я googled и видел, что у других такая же ошибка, но никаких объяснений предупреждения. Кто-нибудь знает, что такое предупреждение?
Ответы
Ответ 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 */ }
У вас не будет никакого инцидента с вашим кодом.