在我的应用程序中,我需要返回“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 <NCParser>
(但它不起作用)
ClassObjective-C 中的对象是头等舱对象,并且可以像任何其他 Objective-C 对象(id、NSObject*、...)一样实现协议
因此,只需执行您通常对任何其他对象协议执行的操作即可,即:
+ (Class<NCParser>)getParserClass {
return [NCCurrencyParser class];
}
And
Class<NCParser> parserClass = [Application getParserClass];
[parserClass parserNumber:1.0];
在 xcode 3.2.3、iPhone Simulator 4.0、GCC 4.2 上构建/编译/测试
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)