我继承的一些代码有一个恼人的警告.它声明了一个协议,然后使用它来指定委托
@protocol MyTextFieldDelegate;
@interface MyTextField: UITextField
@property (nonatomic, assign) id<MyTextFieldDelegate> delegate;
@end
@protocol MyTextFieldDelegate <UITextFieldDelegate>
@optional
- (void)myTextFieldSomethingHappened:(MyTextField *)textField;
@end
Run Code Online (Sandbox Code Playgroud)
使用myTextField实现的类,并使用MyTextFieldDelegate以下代码调用它:
if ([delegate respondsToSelector:@selector(myTextFieldSomethingHappened:)])
{
[delegate myTextFieldSomethingHappened:self];
}
Run Code Online (Sandbox Code Playgroud)
这有效,但会创建(合法)警告:警告:属性类型'id'与从'UITextField'继承的类型'id'不兼容
以下是我提出的解决方案:
有没有办法定义委托属性,以便编译器满意?