It is a new addition to Objective-C, called Lightweight Generics. It was introduced in iOS9 / OS X 10.11 in order to enhance interoperability between Swift and Objective-C. As the documentation says:
Objective-C declarations of NSArray, NSSet and NSDictionary types
using lightweight generic parameterization are imported by Swift with
information about the type of their contents preserved.
For example, consider the following Objective-C property declarations:
@property NSArray<NSDate *>* dates;
@property NSSet<NSString *>* words;
@property NSDictionary<KeyType: NSURL *, NSData *>* cachedData;
Here’s how Swift imports them:
var dates: [NSDate]
var words: Set<String>
var cachedData: [NSURL: NSData]
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…