我用 Objective-C 编写了一个名为 的协议BHIDataFormatter
,它由 BHCsvDataFormatter
、BHJsonFormatter
和BHXmlFormatter
类实现。
作为主要的 .NET 开发人员,可以通过以下方式获得所需的实例:
IDataFormatter formatter;
if (csv) formatter = new CsvDataFormatter();
else if (json) formatter = new JsonFormatter();
else if (xml) formatter = new XmlDataFormatter();
else throw SomeException("Cripes");
基本上,我怎样才能在 Objecive-C 中做同样的事情?我试过了,虽然BHIDataFormatter
是“未知类型”:
BHIDataFormatter* formatter;
if (csv) formatter = [[BHCsvDataFormatter alloc] init];
else if (json) formatter = [[BHJsonDataFormatter alloc] init];
else if (xml) formatter = [[BHXmlDataFormatter alloc] init];
else [[NSException exceptionWithName:@"SomeException" reason:@"Cripes" userInfo:nil] raise];
以下似乎可行,尽管它似乎太笼统(我宁愿明确使用BHIDataFormatter
):
Protocol* formatter = [[CsvDataFormatter alloc] init];