gpt4 book ai didi

objective-c - __typeof self 在 Objective-C 泛型中?

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

新的 Objective-C 泛型语法是否可能或如何可能?

@class MyHelperClass<T>;

@interface NSObject (Extension)
@property (nonatomic,readonly) MyHelperClass<MYTYPE *> * helper;
@end

问题是:

占位符 MYTYPE * 的语法是什么? - 它是否存在 - 这将使它适用于 NSObject 的任何子类。意思是,在 UIView 上例如,helper属性将返回 MyHelperClass<UIView *>NSString 上例如,它会返回 MyHelperClass<NSString *>__typeof self不适用于 self未在接口(interface)中定义。

非常感谢您的建议! :)

最佳答案

我认为这是不可能的。我能想到的最明显的方法如下:

@interface NSObject (Extension)

- (MyHelperClass<instancetype> *)a;

@end

根据 clang 文档,

instancetype is a contextual keyword that is only permitted in the result type of an Objective-C method

然而,这是一个编译器错误,因此也许文档应该阅读“instancetype is only permitted as the result type of an Objective-C method.”

我的下一个想法是通过编写一些 Swift 代码来作弊

protocol Test {
var a: Array<Self> {get}
}

然后将其导入到 Objective-C 文件中,以查看预处理器如何将其转换为 Objective-C。可悲的是,根据 documentation here ,Swift 中的泛型无法从 Objective-C 访问——因为它们不是 Objective-C 语言的特性!根据修订历史,该文档实际上已针对 Swift 2.0 进行了更新。可能它们仍然不受支持,因为即使使用当前可用的泛型,Objective-C 类型系统也不像 Swift 那样具有表现力。

总而言之,除非存在一些我不知道的晦涩的 clang 扩展,否则我认为没有办法做到这一点。

关于objective-c - __typeof self 在 Objective-C 泛型中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33092145/

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