通常,当开发人员创建一个指向实现协议的类的实例时,她会这样做:
id<ProtocolName> myInstance = [[SomeClass alloc] init];
可以更具体地了解实例的类类型并像这样使用它吗?
SomeClass<ProtocolName> *myInstance = [[SomeClass alloc] init];
或在方法中:
- (SomeClass<ProtocolName> *)someMethodWithArg:(int)arg;
通过实现(假设 SomeSuperClass 是 SomeClass 的超类):
- (SomeClass<ProtocolName> *)someMethodWithArg:(int)arg
{
SomeClass<ProtocolName> *instance = [[SomeSuperClass alloc] init];
return instance;
}