Одноэлементный метод выпуска выдает предупреждение?


в моем методе одноэлементного выпуска я ничего не делаю:

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

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

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

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

2 56

2 ответа:

вы должны объявить его oneway.

- (oneway void) release {}

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

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

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

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

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

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