我想继承UITextView,并向委托发送一条新消息.所以,我想扩展委托协议.这样做的正确方法是什么?
我从这开始:
接口:
#import <Foundation/Foundation.h>
@class MySubClass;
@protocol MySubClassDelegate <UITextViewDelegate>
- (void) MySubClassMessage: (MySubClass *) subclass;
@end
@interface MySubClass : UITextView {
}
@end
Run Code Online (Sandbox Code Playgroud)
执行:
#import "MySubClass.h"
@implementation MySubClass
- (void) SomeMethod; {
if ([self.delegate respondsToSelector: @selector (MySubClassMessage:)]) {
[self.delegate MySubClassMessage: self];
}
}
@end
Run Code Online (Sandbox Code Playgroud)
然而我得到了警告:'-MySubClassMessage:' not found in protocol(s).
我有一种工作方式,我创建自己的ivar来存储委托,然后也使用[super setDelegate] 但是这似乎是错误的存储委托.也许不是.
我知道我可以直接传递id,但我的目标是确保编译器检查提供给MySubClass的任何委托是否符合MySubClassDelegate协议.
为了进一步克服:
@interface MySubClassTester : NSObject {
}
@implementation MySubClassTester
- (void) one {
MySubClass *subclass = [[MySubClass alloc] init];
subclass.delegate = self;
} …Run Code Online (Sandbox Code Playgroud)