gpt4 book ai didi

iphone - 我是否需要 @protocol 声明或其他内容来确保子类定义选择器?

转载 作者:行者123 更新时间:2023-12-03 19:57:02 25 4
gpt4 key购买 nike

我有一个类,它执行一些用于写入数据库的通用代码。调出弹出窗口和控件等。虽然我可以将多种类型的元素写入数据库,但每个子类都需要有自己的 -(void) writeTagValue 选择器来实现元素的写入。

基类有一个选择器来调用self.writeTagValue,但由于基类并不真正执行任何写入操作,因此它的-(void) writeElement选择器为空,其中包含 abort();

我在基类.h 中实现了一个协议(protocol)

@protocol IoUISEWriteAnimation <NSObject>
-(void) writeTagValue;
-(IBAction)saWriteValue:(NSNotification *)notification;
@end

将协议(protocol)添加到子类中,现在如果子类没有定义选择器,我会收到编译器警告。

我想知道的是,有没有办法删除基类中空的 -(void) writeElement 选择器?

最佳答案

你可以这样做:

@protocol MyProtocol<NSObject>

@required
-(void) myRequiredMethod;

@optional
-(void) myOptionalMethod;

@end

当您需要调用可选方法时,您可以执行以下操作:

if ([delegate respondsToSelector:@selector(myOptionalMethod)])
[delegate myOptionalMethod];
else
// abort, or ignore.

关于iphone - 我是否需要 @protocol 声明或其他内容来确保子类定义选择器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9232051/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com