自分用メモです。
deprecatedなやつってよくiOS SDKが上がったりするとでてきますけど、自分で定義する方法を知らなかったので調べてみた。
まずこんな定義があったとします。
@interface Anal : NSObject - (Unko *) dappun; - (void *) senjou:(Water *) _water; @end
アナルから脱糞するとうんこが出てくるという非常にわかりやすいクラスです。アナルを水で綺麗にするというウォシュレットっぽいのにも対応しています。これならベトナム式のウォシュレットでも対応できますね。お湯で洗うとしてもHot Waterなインスタンスを渡してあげればいいでしょう。
では、そもそもアナルクラスなんて使わねーよクソが!ってなった時はこんなふうに書きます。
__attribute__ ((deprecated)) @interface Anal : NSObject - (Unko *) dappun; - (void *) senjou:(Water *) _water; @end
__attribute__ ((deprecated)) というのがキーワードです。
これでアナルクラスを使おうとするとメッセージが出てくるようになります。
では、次に脱糞ってなんだよアナルが英語だったらdo_a_pooだろクソが!ってなった場合に、もしかすると脱糞し続けてるインスタンスがあるかもしれないのでこのメソッドをdeprecatedにしてみます。
@interface Anal : NSObject - (Unko *) do_a_poo; - (Unko *) dappun __attribute__ ((deprecated)); - (void *) senjou:(Water *) _water; @end
これで脱糞し続けてるインスタンスがあっても生きて行けます。
では、俺は紙派だ!という人がウォシュレットの存在を否定したらどうでしょう。という場合はこんな感じになります。
@interface Anal : NSObject - (Unko *) dappun; - (void *) senjou:(Water *) _water __attribute__ ((deprecated)); - (void *) senjou:(Paper *) _paper; @end
引数があっても後ろに追加すればOKという感じです。
ぶっちゃけこれってObjective-C以外でも使えると思います。__attribute__というGCCの拡張機能ですね。
あと、アナルクラス書いてるやつたぶんいないと思います!