gpt4 book ai didi

objective-c - 使用 objective-c 中的类别私下扩展协议(protocol)

转载 作者:搜寻专家 更新时间:2023-10-30 20:07:16 27 4
gpt4 key购买 nike

做了一些搜索并没有找到太多,但想知道是否可以扩展协议(protocol)。

目前,在MyDelegate.h中,有:

@protocol MyDelegate <NSObject>

希望创建一个私有(private)头文件 MyDelegate+Private.h,以不向客户端公开额外的可选方法。

@protocol MyDelegate (Private) <NSObject>

这似乎行不通。是否可以?我想避免创建一个全新的委托(delegate)协议(protocol)来保存当前协议(protocol)的超集。

最佳答案

我认为您不能在协议(protocol)上创建类别,但您可以使用协议(protocol)创建协议(protocol)并将其保存在私有(private) header 中。 Apple 在其框架中经常这样做。

@protocol MyDelegate_Private <MyDelegate>
- (void)myRequiredPrivateMethod;
@optional
- (void)myOptionalPrivateMethod;
@end

然后你在声明类的时候指定这个协议(protocol)。要隐藏存在私有(private)协议(protocol)的事实,请使用将类声明为实现公共(public)协议(protocol)的公共(public) header 和将其声明为实现私有(private)协议(protocol)的私有(private) header 。

另外,如果你只是在协议(protocol)中使用可选的方法,你真的不需要做一个协议(protocol)。它所做的只是指定可以实现的方法列表,并且由于它仅供私有(private)使用,因此没有必要。您可以只说该类实现了公共(public)协议(protocol)并且“恰好”也实现了接口(interface)中未包含的这些其他方法。

关于objective-c - 使用 objective-c 中的类别私下扩展协议(protocol),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5302005/

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