<ObjectType> 在 Objective-C

<ObjectType> in Objective-C

在NSArray.h看到界面是这样的

@interface NSArray<ObjectType>

<ObjectType>有什么意义?

那是 Apple 使用轻量级泛型。 Xcode 7.3.1 中的完整 @interface 声明如下所示:

@interface NSArray<__covariant ObjectType> : NSObject <NSCopying, NSMutableCopying, NSSecureCoding, NSFastEnumeration>

ObjectType 是一个占位符,用于表示您传入的通用参数,以便编译器知道在何处引用它们。这与使用 NSObject * 不同,因为 ObjectType 类似于 id,它可以引用非 Objective-C 指针类型,例如 CoreFoundation 对象。

例如,如果我想创建一个 class 来模拟仅针对特定 class 的数组,我可以做类似 @interface MYArray<MyClass *>.

的事情

您还可以将字符串数组专门声明为 NSArray<NSString *>

有关 Objective-C 泛型的详细信息,请参阅 this article