<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。
在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。