Objective-Cでプロトコル/デリゲートを拡張するには?
2023-09-16 20:55:35
質問
AVAudioPlayer のようなクラスを拡張したい場合、AVAudioPlayerDelegate に別のメソッドを追加する最良の方法は何でしょうか?
それのためのカテゴリを作るべきですか、私はそれを拡張しますか?
拡張する場合、実際のデリゲートゲッター/セッターを必ず上書きしなければならないのでしょうか? どのようにプロトコルを拡張すればいいのでしょうか?
以下は、私にエラーを与えます。
@protocol AudioTrackDelegate : AVAudioPlayerDelegate {
- (void)foo;
}
@end
@interface AudioTrack : AVAudioPlayer {
}
@end
どのように解決するのですか?
他のプロトコルを実装したプロトコルを作成するための構文は以下の通りです。
@protocol NewProtocol <OldProtocol>
- (void)foo;
@end
の中のメソッドを呼び出したい場合
NewProtocol
と型付けされたポインタに対して
OldProtocol
を呼び出すことができます。
respondsToSelector
:
if ([object respondsToSelector:@selector(foo)])
[(id)object foo];
あるいは、スタブメソッドをカテゴリとして
NSObject
:
@interface NSObject (NewProtocol)
- (void)foo;
@end
@implementation NSObject (NewProtocol)
- (void)foo
{
}
@end
関連
-
[解決済み] Objective-CでNSStringsを連結するためのショートカット集
-
[解決済み] Objective-Cの定数
-
[解決済み] Objective-Cで乱数を発生させる
-
[解決済み] Objective-Cで、ある文字列が他の文字列を含んでいるかどうかを調べるにはどうすればよいですか?
-
[解決済み] Objective-Cのtypedef enumとは何ですか?
-
[解決済み] SwiftからObjective-Cのコードを呼び出すにはどうしたらいいですか?
-
[解決済み] Objective-Cでデリゲートを作成するにはどうしたらいいですか?
-
[解決済み] Objective-Cで、オブジェクトの種類をテストするにはどうしたらいいですか?
-
[解決済み] エラー : サービスは無効です
-
[解決済み] Objective-Cのデリゲートには通常、retainではなくassignというプロパティが与えられるのはなぜですか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] APNSの.pemファイルを作成する?
-
[解決済み] TabBarのタブビューにプログラムで切り替える?
-
[解決済み] モバイルSafari(iPhone)でテキストエリアのインナーシャドウを除去する
-
[解決済み] Xcode 4.2 - '...' の宣言は、この関数の外では表示されません 警告
-
[解決済み] iPhoneのTableViewのCellの右側に小さな矢印を追加する
-
[解決済み] drawRectを使うか使わないか(drawRect/Core Graphicsとsubview/imagesをいつ使うか、なぜ使うか)?
-
[解決済み] Mac OS Xのスタティック・ライブラリ(.a)のターゲット・アーキテクチャはどのように決定するのですか?
-
[解決済み] iPhone 5 CSSメディアクエリ
-
[解決済み] CALayersを使ったUIViewの丸め方 - 角の一部だけ - How?
-
[解決済み] MKMapViewのズームレベル設定