Il semble également être nécessaire pour éliminer un avertissement avec XCode 4.2 (LLVM). Plus précisément:
-(void) release { }
donne l'avertissement suivant dans XCode 4.2 (avec LLVM):
avertissement: Sémantique Problème: les conflits d'objet distribué des modificateurs sur le type de retour dans la mise en œuvre de "libération"
L'avertissement peut être éliminé par l'ajout de la oneway modificateur:
-(oneway void) release { }
C'est dans la mise en œuvre d'un singleton si la libération n'a pas vraiment faire quoi que ce soit.
Cela est nécessaire (au moins pour éliminer l'avertissement) sur iOS ainsi que sur OS X. Le NSObject protocole dans l'iOS docs définit libération (oneway void) même si il n'y a pas d'Objets Distribués dans iOS. Il semble que LLVM capte alors que GCC ne le fait pas.