sách gpt4 ăn đã đi

iphone - 协议(protocol)中的协议(protocol)是否可以被视为包含它们采用的协议(protocol)?

In lại 作者:搜寻专家 更新时间:2023-10-30 20:23:43 28 4
mua khóa gpt4 giày nike

我在遵循继承树的几个类中分配协议(protocol)。像这样:

头等舱

@protocol LevelOne
- (void) functionA
@kết thúc

@interface BaseClass : NSObject {
}

二等舱

@protocol LevelTwo 
- (void) functionB
@kết thúc

@interface SubClass : BaseClass {
}

稍后我将该类指定为其他类的委托(delegate)属性

基类

@interface AppClass : NSObject {
@protected
id levelOneDelegate;
}

@property (assign) id levelOneDelegate;

子类

@interface AppClassesFriend : AppClass {
@protected
id levelTwoDelegate;
}

@property (assign) id levelTwoDelegate;

在这段旅程的最后,AppClassesFriend 有 2 个属性。

“levelOneDelegate”在分配有 BaseClass 对象时可以访问“functionA”。

但是,我发现“levelTwoDelegate”只能访问“functionB”(它被分配了一个 SubClass 对象)。

为了让 AppClassesFriend 能够使用这两个函数,看来我需要同时分配一个 levelOneDelegate 和 levelTwoDelegate。

有什么方法可以让“levelTwoDelegate”同时访问这两者吗?因为,这两个函数在“子类”上都可用。

所以,我希望能够做的是:

SubClass *s = [SubClass alloc];
AppClassesFriend *a = [AppClassesFriend alloc];
a.levelTwoDelegate = s;

所以在 AppClassesFriend (a) 中我可以使用:

 [self.levelTwoDelegate functionA]; <---- this is never found
[self.levelTwoDelegate functionB];

不过好像还得补充

a.levelOneDelegate = s;

感谢有人花时间阅读到这里。所以总而言之,问题是,如何让“levelTwoDelegate”同时访问 functionA 和 functionB?

câu trả lời hay nhất

只需声明您的子类的委托(delegate)属性同时实现一级和二级协议(protocol)(即同时实现 functionA 和 functionB):

@interface AppClassesFriend : AppClass {
@protected
id levelOneAndTwoDelegate;
}

@property (assign) id levelOneAndTwoDelegate;

关于iphone - 协议(protocol)中的协议(protocol)是否可以被视为包含它们采用的协议(protocol)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1185801/

28 4 0
Chứng chỉ ICP Bắc Kinh số 000000
Hợp tác quảng cáo: 1813099741@qq.com 6ren.com
Xem sitemap của VNExpress