gpt4 book ai didi

objective-c - 仅在目标支持时才执行选择器?

转载 作者:搜寻专家 更新时间:2023-10-30 19:52:18 24 4
gpt4 key购买 nike

如何调用可选协议(protocol)方法?

@protocol Foo
@optional
- (void) doA;
- (void) doB;
@end

现在我们必须在每次调用 doAdoB 时进行检查:

if ([delegate respondsToSelector:@selector(doA)])
[delegate performSelector:@selector(doA)];

这太傻了。我想出了一个关于 NSObject 的类别,它添加了:

- (void) performSelectorIfSupported: (SEL) selector
{
if ([self respondsToSelector:selector])
[self performSelector:selector];
}

……也好不了多少。您有更聪明的解决方案,还是只是在每次调用之前忍受条件?

最佳答案

老实说,我不确定我是否理解您的反对意见。据我所知,代码完全符合您对可选方法的期望,并且几乎没有多余的冗长文字。我认为您的类别不会使您的意图更加清晰。

对您的第一个选项的唯一更改是这样做:

if ([delegate respondsToSelector:@selector(doA)])
[delegate doA];

关于objective-c - 仅在目标支持时才执行选择器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4255128/

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