カスタムクラスがあります。他のクラスがそれをインスタンス化する場合は、特定のメソッドが「必要」です。これを達成する方法は?私はそれを継承したくありません。なぜなら、私は余分な機能を追加したり、その機能を変更したりしないからです。カスタムプロトコルについて考えましたが、クラスが「インスタンス化するクラスによって定義されたプロトコルが実装されている場合にのみ、それ自体をインスタンス化できるようにする必要がある」ことをクラスはどのように知るのでしょうか。
シナリオには
classA : base-class classB : base-class classM
、タイプのプロパティがありますbase-class
。objclassA
またはとして設定しobjclassB
ます。ClassA
&classB
インスタンス化してclassM
からobjclassM`` calls method
callBack method which is in both
classA &
classBclassMbase . warning in
-classがcallBack`に応答しない場合があります
@protocol UITableViewMgrDelegate
@required
-(void)tableRowSelected:(int)idd selectedType:(NSString*)selectedType selectedValue:(NSString*)selectedValue;
@end
@interface UITableViewMgr : UIViewController {
NSMutableArray *dataSo,*IDs;
NSMutableArray *dataSoRight;
UIViewController *backObject;
}
in .m
[backObject tableRowSelected:(NSInteger)[indexPath row] selectedType:[NSString stringWithFormat:@"cell"] selectedValue:[NSString stringWithFormat:@"cell"]];
//warning at this line
// 'UIViewController' may not respond to '-tableRowSelected:selectedType:selectedValue:'
ありがとうsssssssこのようにクラスでカスタムプロトコルを定義することにより、これらの警告を取り除きました
@protocol UITableViewMgrDelegate
@required
-(void)tableRowSelected:(int)idd selectedType:(NSString*)selectedType selectedValue:(NSString*)selectedValue;
@optional
- (void)AddList:(NSString*)value isNew:(int)isNew;
@end