gpt4 book ai didi

objective-c - Objective-C 中的 id 指针

转载 作者:行者123 更新时间:2023-12-05 01:21:04 25 4
gpt4 key购买 nike

我是 Objective-C 的新手。我来自 Java 背景。我正在尝试在 objective-c 中创建一个通用函数,如下所示:

- (id<BaseEntity>*)retreive:(NSString *)idValue unpackedWith:(id<ITransferObject>*) transferObject{
NSString * url = [[[self baseUurl] stringByAppendingString: [self getPath]]stringByAppendingString: @"/retreive/"];
url = [url stringByAppendingString:idValue];
NSMutableURLRequest *request = [self createGET:url];
NSString *responseString = [self processRequest:request];
BaseEntity* responseEntity = [transferObject unpack:responseString];
return responseEntity;
}

我想要完成的是创建一个函数,该函数可以采用指向任何实现 ITransferObject 协议(protocol)的对象的指针。在此对象上使用 ITransferObject 协议(protocol)中定义的函数。然后返回一个指向实现 BaseEntity 协议(protocol)的对象的指针。我觉得我对此采用了 Java 泛型方法,但它不起作用。

我收到以下错误:

Bad receiver type `__autoreleasing id<ITransferObject> *'

从这一行:

BaseEntity* responseEntity = [transferObject unpack:responseString];

我得到了错误:

Implicit conversion of an Objective-C pointer to `__autoreleasing id<BaseEntity> *' is disallowed with ARC

从这一行:

return responseEntity;

有什么想法吗?

最佳答案

id 本身就是一个指针类型——您不需要像处理类那样在其后面附加一个 * 来表示一个指针。

- (id<BaseEntity>)retrieve:(NSString *)idValue unpackedWith:(id<ITransferObject>)transferObject

关于objective-c - Objective-C 中的 id 指针,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26149719/

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