我有一个简单的协议叫做 OnSuggestionTextChanged
@protocol OnSuggestionTextChanged <NSObject>
-(void)onTextChanged:(NSString*)newText;
@end
我还有一个名为 TextEditable 的协议,该协议将此协议作为属性
#import <Foundation/Foundation.h>
#import "OnSuggestionTextChanged.h"
@protocol TextEditable <NSObject>
@required
-(void)setTextString:(NSString*)text;
-(NSString*)textString;
-(void)notifySuggestionButtonPressed;
-(NSInteger)cursorPosition;
@property(nonatomic,weak)id<OnSuggestionTextChanged> onSuggestionTextChange;
@end
但是我的自定义UITextView
符合协议TextEditable
。
当我尝试访问该媒体资源OnSuggestionTextChanged
时
我得到了:
[CustomTextView onSuggestionTextChanged]无法识别的选择器 (对于onTextChanged 不)
这真的很奇怪,因为Xcode不会抛出编译器错误但是会出现运行时错误。
请告诉我,我想要做的事情是否真的可行。如果是这样,为什么我会得到无法识别的选择器?
万一你们不相信我。
答案 0 :(得分:0)
在这里回答我自己的问题:
协议中定义的属性不是自动合成的,而是需要在符合协议的类中合成它们。
另外,我没有收到编译时错误,但是有一个警告,因为@ Cy-4AH声明说:
自动属性合成不会合成协议中声明的属性
感谢大家的上述评论。