oneway void
サンプルコードのreleaseメソッドをオーバライドした所、警告が出た。
-(void) release { //NOOP }
警告
Warning: Conflicting distributed object modifiers on return type in implementation of 'release'
戻り値の分散オブジェクト修飾子に矛盾がある? なに? 全然分らない。
分らない時はリファレンスということで、本家のドキュメントを読んで見ることにした。
分散オブジェクト
Objective-Cのリモートメッセージングには、異なるアドレス空間にあるオブジェクトどうしの接続の確立、リモートアドレス空間内のオブジェクトを対象とするメッセージの検出、アドレス空間どうしでのデータ転送を行うことのできるランタイムシステムが必要です。また、2つのタスクの間のスケジュール調整を行う必要があります。〜
同期および非同期メッセージ
〜
しかし、応答を待機することは必ずしも必要なわけではなく、得策でないこともあります。場合によっては、リモートメッセージを単純に送信して戻るだけでよいこともあります。そして、レシーバが可能なときにタスクに取り掛かるのに任せます。その間、送信側は他のことを続けられます。
Objective-Cは戻り型修飾子onewayを指定して、メソッドが非同期メッセージ専用に使用されることを示します。第12章 ランタイムシステム - Objective-C 2.0 プログラミング言語(PDF) より
Objective-Cは元々分散環境でのオブジェクト通信、リモートメッセージングをサポートすることを念頭において設計されているが、その際に送ったきりで戻り値を待機しない非同期メッセージ(oneway)を記述するための予約語として使われているようだ。※
従ってスーパークラスと同じに記述する必要がある。
-(oneway void) release { //onewayは非分散環境では意味を持たない }
※意味としてはCORBAのoneway通信に近いのだと思う