gpt4 book ai didi

objective-c - objective-c 中的轻量级泛型

转载 作者:太空狗 更新时间:2023-10-30 03:57:09 25 4
gpt4 key购买 nike

我正在尝试使用轻量级泛型实现堆栈类。但是代码编译失败,因为Xcode找不到ObjectType

的定义
@implementation Stack
- (ObjectType)popObject !!!!!!!!!Expected a type
{
return self.allObjects.firstObject;
}
@end

这很奇怪,因为 header 声明不会产生任何错误。

@interface Stack<__covariant ObjectType> : NSObject
- (ObjectType)popObject;
@property (nonatomic, readonly) NSArray<ObjectType> *allObjects;
@end

我可以通过将 ObjectType 更改为 id 来使其工作。有没有更好的方法来修复错误?

最佳答案

Objective-C 泛型确实是轻量级的,添加它是为了提高与 Swift 的互操作性,而不是为了让 Objective-C 代码更安全。与可空性类似,将泛型视为一种注释接口(interface)的方式,而不是更改实现的原因。

在实现中将 ObjectType 更改为 id 是最好的方法。

进一步阅读:article on Objective C Generics .如果您想了解 __covariant,请阅读 bob 对该文章的评论。

关于objective-c - objective-c 中的轻量级泛型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30909722/

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