gpt4 book ai didi

iphone如何指定Class数据类型必须采用某种协议(protocol)

转载 作者:行者123 更新时间:2023-12-03 20:48:44 24 4
gpt4 key购买 nike

在我的应用程序中,我需要返回“Class”作为返回类型,例如:

应用程序.m:

+ (Class)getParserClass {
return [NCCurrencyParser class];
}

NCCurrencyParser.m:

@interface NCCurrencyParser NSObject <NCParser>
@protocol NCParser
+(NSNumber *)parserNumber:(NSNumber *)number;

在调用者方法中:

Class parserClass = [Application getParserClass];
[parserClass parserNumber:1.0];

但是编译器给出了错误,parserClass 可能无法响应 parseNumber。我如何强制类(class)必须采用某些协议(protocol),例如:Class <NCParser> (但它不起作用)

最佳答案

Objective-C 中的

Class 对象是第一类对象,并且可以像任何其他 Objective-C 对象(id、NSObject*、...)一样实现协议(protocol)

因此,只需执行您通常对任何其他对象协议(protocol)执行的操作即可,即:

+ (Class<NCParser>)getParserClass {
return [NCCurrencyParser class];
}

还有

Class<NCParser> parserClass = [Application getParserClass];
[parserClass parserNumber:1.0];

在 xcode 3.2.3、iPhone Simulator 4.0、GCC 4.2 上构建/编译/测试

关于iphone如何指定Class数据类型必须采用某种协议(protocol),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3278442/

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