gpt4 book ai didi

Objective-C:带有协议(protocol)的实例指针

转载 作者:行者123 更新时间:2023-12-03 16:32:32 25 4
gpt4 key购买 nike

通常,当开发人员创建一个指向实现协议(protocol)的类实例的指针时,她会这样做:

id<ProtocolName> myInstance = [[SomeClass alloc] init];

可以更具体地了解实例的类类型并像这样使用它吗?

SomeClass<ProtocolName> *myInstance = [[SomeClass alloc] init];

或者在方法中:

- (SomeClass<ProtocolName> *)someMethodWithArg:(int)arg;

实现(假设 SomeSuperClass 是 SomeClass 的父类(super class)):

- (SomeClass<ProtocolName> *)someMethodWithArg:(int)arg
{
SomeClass<ProtocolName> *instance = [[SomeSuperClass alloc] init];

return instance;
}

最佳答案

是的,没问题。 (虽然我认为你的最后一个例子使用 SomeClass ,它应该使用 SomeSuperClass ,但我明白你的意思。)

事实上,有时您需要这样做。例如,使用autoreleasereleaseNSObject上(这不适用于 id<ProtocolName> (除非 ProtocolName 明确符合 NSObject 协议(protocol))),您必须使用:

NSObject<ProtocolName> *protoObj = [....];
[....]
[protoObj autorelease];

关于Objective-C:带有协议(protocol)的实例指针,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12624916/

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