在Swift文档中,它说
使用类型检查运算符(is)检查实例是否属于某个子类类型。如果实例属于该子类类型,则类型检查运算符返回true,否则返回false。
代码如下:
// Playground - noun: a place where people can play
import Foundation
var aString = ""
var bString = aString
aString == bString
//true
//aString === bString
//error: type 'String' does not conform to protocol 'AnyObject'
var aObject:AnyObject = aString as AnyObject
var bObject:AnyObject = bString as AnyObject
aObject === bObject
//false
//aString is NSString
//error: 'NSString' is not a subtype of 'String'
var aNSString = NSString()
var bNSString = aNSString
aNSString == bNSString
//true
aNSString === bNSString
//true
//aNSString is NSString
//always true
//aNSString is String
//always true
NSString实例被视为String类型。但是,String类型是值类型,NSString类型是引用类型。此外,String类型不符合AnyObject,NSString是。
那么为什么在类型检查中将NSString实例视为String类型?