Swift逆向之一
本篇开始本人将第一次研究Swift逆向
$s10testswift111AppDelegateCMa
等价:AppDelegate.class
解析:type metadata accessor for AppDelegate
$s10testswift113SceneDelegateC18sceneDidDisconnectyySo7UISceneCF
等价:-[SceneDelegate sceneDidDisconnect:(UIScene*)scene]
解析:SceneDelegate.sceneDidDisconnect(__C.UIScene)
$s10testswift113SceneDelegateC5scene_13willConnectTo7optionsySo7UISceneC_So0I7SessionCSo0I17ConnectionOptionsCtF
等价:-[SceneDelegate scene:(UIScene)scene willConnectTo:(UISceneSession)session options:(UISceneConnectionOptions)options]
解析:SceneDelegate.scene(_: __C.UIScene, willConnectTo: __C.UISceneSession, options: __C.UISceneConnectionOptions) -> ()
$ss27_allocateUninitializedArrayySayxG_BptBwlF
等价:_allocateUninitializedArray()
解析:Swift._allocateUninitializedArray<A>(Builtin.Word) -> ([A], Builtin.RawPointer)
$sypN
等价:Any.class
解析:type metadata for Any
$sSSN
等价:String.class
解析:type metadata for Swift.String
$sSS21_builtinStringLiteral17utf8CodeUnitCount7isASCIISSBp_BwBi1_tcfC
等价:-[String init_builtinStringLiteral:(char*) utf8CodeUnitCount:(int) isASCII:(bool)]
解析:Swift.String.init(_builtinStringLiteral: Builtin.RawPointer, utf8CodeUnitCount: Builtin.Word, isASCII: Builtin.Int1) -> Swift.String
$ss5print_9separator10terminatoryypd_S2StFfA0_
解析:default argument 1 of Swift.print(_: Any..., separator: Swift.String, terminator: Swift.String) -> ()
$ss5print_9separator10terminatoryypd_S2StFfA1_
解析:default argument 2 of Swift.print(_: Any..., separator: Swift.String, terminator: Swift.String) -> ()
$ss5print_9separator10terminatoryypd_S2StF
等价:print(...) 等价于ObjC中的NSLog
解析:Swift.print(_: Any..., separator: Swift.String, terminator: Swift.String) -> ()
注:String类型作为参数占2个寄存器,作为返回值也占2个寄存器(X0/X1)
$s10testswift113SceneDelegateCACycfC
等价:-[SceneDelegate __allocating_init]
解析:SceneDelegate.__allocating_init() -> SceneDelegate
$s10testswift113SceneDelegateCACycfc
等价:-[SceneDelegate init]
解析:SceneDelegate.init() -> SceneDelegate
$s10testswift113SceneDelegateCfD
等价:-[SceneDelegate __deallocating_deinit]
解析:SceneDelegate.__deallocating_deinit
$sSSSgWOe
等价:-[String consume]
解析:outlined consume of Swift.String?
$sSSSgWOy
等价:-[String copy]
解析:outlined copy of Swift.String?
$sSSSgWOc
等价:-[String init]
解析:outlined init with copy of Swift.String?
$sSSSgWOh
等价:-[String destroy]
解析:outlined destroy of Swift.String?
写一个简单函数测试:
func runoob(site: String) -> String {
return (site)
}
runoob(site: "www.runoob.com")
可以发现runoob函数传参很特殊,字符串www.runoob.com的直接拆成2个8字节存到X0/X1.
x0 = 0x6f6e75722e777777 www.runo
x1 = 0xee006d6f632e626f oob.com 长度0xe
若将字符串长度>=16则会出现.
x0 = 0xd000000000000010 长度0x10
x1 = 0x800000010096e780 地址0x10096e780+0x20处指向C字符串
因此Swift.String在内存和寄存器中永远占2个坑位,其内存结构类似于std::string,下面以结构体表示.
struct Swift.StaticString {
int64_t _addr;
int64_t _len;
};
union Swift.String {
struct {
char _buf[15];
int _type : 4; // short的type=0xe
int _len : 4; // 字符串长度
} short,
struct {
int64_t _len : 60; // 字符串长度
int64_t _type : 4; // long的type=0xd
int64_t _addr; // _addr&0x7ffffffffffffffff为真实地址
} long
}
找到的Swift<-->ObjC转换:
String <-> NSString
$sSS10FoundationE19_bridgeToObjectiveCSo8NSStringCyF
Swift.String._bridgeToObjectiveC(String) -> NSString
$sSs10FoundationE19_bridgeToObjectiveCSo8NSStringCyF
Swift.String._bridgeToObjectiveC(Substring) -> NSString
$sSs10FoundationE36_unconditionallyBridgeFromObjectiveCySsSo8NSStringCSgFZ
Swift.Substring._unconditionallyBridgeFromObjectiveC(NSString) -> Substring
$sSS23_bridgeToObjectiveCImplyXlyF
Swift.String._bridgeToObjectiveCImpl() -> Swift.AnyObject
$sSS10FoundationE36_unconditionallyBridgeFromObjectiveCySSSo8NSStringCSgFZ
Swift.String._unconditionallyBridgeFromObjectiveC(NSString) -> Swift.String
ALL <-> NSNumber
$sSi10FoundationE19_bridgeToObjectiveCSo8NSNumberCyF
Swift.Int._bridgeToObjectiveC(Int) -> NSNumber
$sSi10FoundationE36_unconditionallyBridgeFromObjectiveCySiSo8NSNumberCSgFZ
Swift.Int._unconditionallyBridgeFromObjectiveC(NSNumber) -> Int
$sSu10FoundationE19_bridgeToObjectiveCSo8NSNumberCyF
Swift.UInt._bridgeToObjectiveC(UInt) -> NSNumber
$sSu10FoundationE36_unconditionallyBridgeFromObjectiveCySuSo8NSNumberCSgFZ
Swift.UInt._unconditionallyBridgeFromObjectiveC(NSNumber?) -> UInt
$ss4Int8V10FoundationE19_bridgeToObjectiveCSo8NSNumberCyF
Swift.Int8._bridgeToObjectiveC(Int8) -> NSNumber
$ss4Int8V10FoundationE36_unconditionallyBridgeFromObjectiveCyABSo8NSNumberCSgFZ
Swift.Int8._unconditionallyBridgeFromObjectiveC(NSNumber) -> Int8
$ss5UInt8V10FoundationE19_bridgeToObjectiveCSo8NSNumberCyF
Swift.UInt8._bridgeToObjectiveC(UInt8) -> NSNumber
$ss5UInt8V10FoundationE36_unconditionallyBridgeFromObjectiveCyABSo8NSNumberCSgFZ
Swift.UInt8._unconditionallyBridgeFromObjectiveC(NSNumber?) -> UInt8
$ss5Int16V10FoundationE19_bridgeToObjectiveCSo8NSNumberCyF
Swift.Int16._bridgeToObjectiveC(Int16) -> NSNumber
$ss5Int16V10FoundationE36_unconditionallyBridgeFromObjectiveCyABSo8NSNumberCSgFZ
Swift.Int16._unconditionallyBridgeFromObjectiveC(NSNumber?) -> Int16
$ss6UInt16V10FoundationE19_bridgeToObjectiveCSo8NSNumberCyF
Swift.UInt16._bridgeToObjectiveC(UInt16) -> NSNumber
$ss6UInt16V10FoundationE36_unconditionallyBridgeFromObjectiveCyABSo8NSNumberCSgFZ
Swift.UInt16._unconditionallyBridgeFromObjectiveC(NSNumber) -> UInt16
$ss5Int32V10FoundationE19_bridgeToObjectiveCSo8NSNumberCyF
Swift.Int32._bridgeToObjectiveC(Int32) -> NSNumber
$ss5Int32V10FoundationE36_unconditionallyBridgeFromObjectiveCyABSo8NSNumberCSgFZ
Swift.Int32._unconditionallyBridgeFromObjectiveC(NSNumber?) -> Int32
$ss6UInt32V10FoundationE19_bridgeToObjectiveCSo8NSNumberCyF
Swift.UInt32._bridgeToObjectiveC(UInt32) -> NSNumber
$ss6UInt32V10FoundationE36_unconditionallyBridgeFromObjectiveCyABSo8NSNumberCSgFZ
Swift.UInt32._unconditionallyBridgeFromObjectiveC(NSNumber?) -> UInt32
$ss5Int64V10FoundationE19_bridgeToObjectiveCSo8NSNumberCyF
Swift.Int64._bridgeToObjectiveC(Int64) -> NSNumber
$ss5Int64V10FoundationE36_unconditionallyBridgeFromObjectiveCyABSo8NSNumberCSgFZ
Swift.Int64._unconditionallyBridgeFromObjectiveC(NSNumber) -> Int64
$ss6UInt64V10FoundationE19_bridgeToObjectiveCSo8NSNumberCyF
Swift.UInt64._bridgeToObjectiveC(UInt64) -> NSNumber
$ss6UInt64V10FoundationE36_unconditionallyBridgeFromObjectiveCyABSo8NSNumberCSgFZ
Swift.UInt64._unconditionallyBridgeFromObjectiveC(NSNumber) -> UInt64
$sSd10FoundationE19_bridgeToObjectiveCSo8NSNumberCyF
Swift.Double._bridgeToObjectiveC(Double) -> NSNumber
$sSd10FoundationE36_unconditionallyBridgeFromObjectiveCySdSo8NSNumberCSgFZ
Swift.Double._unconditionallyBridgeFromObjectiveC(NSNumber) -> Double
$sSf10FoundationE19_bridgeToObjectiveCSo8NSNumberCyF
Swift.Float._bridgeToObjectiveC(Float) -> NSNumber
$sSf10FoundationE36_unconditionallyBridgeFromObjectiveCySfSo8NSNumberCSgFZ
Swift.Float._unconditionallyBridgeFromObjectiveC(NSNumber) -> Float
$sSb10FoundationE19_bridgeToObjectiveCSo8NSNumberCyF
Swift.Bool._bridgeToObjectiveC(Bool) -> NSNumber
$sSb10FoundationE36_unconditionallyBridgeFromObjectiveCySbSo8NSNumberCSgFZ
Swift.Bool._unconditionallyBridgeFromObjectiveC(NSNumber) -> Bool
$s12CoreGraphics7CGFloatV10FoundationE19_bridgeToObjectiveCSo8NSNumberCyF
CoreGraphics.CGFloat._bridgeToObjectiveC() -> NSNumber
$s12CoreGraphics7CGFloatV10FoundationE36_unconditionallyBridgeFromObjectiveCyACSo8NSNumberCSgFZ
CoreGraphics.CGFloat._unconditionallyBridgeFromObjectiveC(NSNumber) -> CGFloat
Array <-> NSArray
$sSa10FoundationE19_bridgeToObjectiveCSo7NSArrayCyF
Swift.Array._bridgeToObjectiveC(Array) -> NSArray
$sSa10FoundationE36_unconditionallyBridgeFromObjectiveCySayxGSo7NSArrayCSgFZ
Swift.Array._unconditionallyBridgeFromObjectiveC(NSArray?) -> Array
$sSa23_bridgeToObjectiveCImplyXlyF
Swift.Array._bridgeToObjectiveCImpl() -> Swift.AnyObject
Dictionary <-> NSDictionary
$sSD10FoundationE19_bridgeToObjectiveCSo12NSDictionaryCyF
Swift.Dictionary._bridgeToObjectiveC(Dictionary) -> NSDictionary
$sSD10FoundationE36_unconditionallyBridgeFromObjectiveCySDyxq_GSo12NSDictionaryCSgFZ
Swift.Dictionary._unconditionallyBridgeFromObjectiveC(NSDictionary) -> Dictionary
$sSD23_bridgeToObjectiveCImplyXlyF
Swift.Dictionary._bridgeToObjectiveCImpl() -> Swift.AnyObject
AnyHashable <-> NSObject
ss11AnyHashableV10FoundationE19_bridgeToObjectiveCSo8NSObjectCyF
Swift.AnyHashable._bridgeToObjectiveC(AnyHashable) -> NSObject
$ss11AnyHashableV10FoundationE36_unconditionallyBridgeFromObjectiveCyABSo8NSObjectCSgFZ
Swift.AnyHashable._unconditionallyBridgeFromObjectiveC(NSObject) -> AnyHashable
Set <-> NSSet
$sSh10FoundationE19_bridgeToObjectiveCSo5NSSetCyF
Swift.Set._bridgeToObjectiveC(Set) -> NSSet
$sSh23_bridgeToObjectiveCImplyXlyF
Swift.Set._bridgeToObjectiveCImpl() -> Swift.AnyObject
$sSh10FoundationE36_unconditionallyBridgeFromObjectiveCyShyxGSo5NSSetCSgFZ
Swift.Set._unconditionallyBridgeFromObjectiveC(NSSet) -> Set
Data <-> NSData
$s10Foundation4DataV19_bridgeToObjectiveCSo6NSDataCyF
Foundation.Data._bridgeToObjectiveC(Data) -> NSData
$s10Foundation4DataV36_unconditionallyBridgeFromObjectiveCyACSo6NSDataCSgFZ
Foundation.Data._unconditionallyBridgeFromObjectiveC(NSData) -> Data
URL <-> NSURL
$s10Foundation3URLV19_bridgeToObjectiveCSo5NSURLCyF
Foundation.URL._bridgeToObjectiveC(URL) -> NSURL
$s10Foundation3URLV36_unconditionallyBridgeFromObjectiveCyACSo5NSURLCSgFZ
Foundation.URL._unconditionallyBridgeFromObjectiveC(NSURL) -> URL
$s10Foundation10URLRequestV19_bridgeToObjectiveCSo12NSURLRequestCyF
Foundation.URLRequest._bridgeToObjectiveC() -> __C.NSURLRequest
$s10Foundation10URLRequestV36_unconditionallyBridgeFromObjectiveCyACSo12NSURLRequestCSgFZ
Foundation.URLRequest._unconditionallyBridgeFromObjectiveC(NSURLRequest) -> URLRequest
$s10Foundation13URLComponentsV19_bridgeToObjectiveCSo15NSURLComponentsCyF
Foundation.URLComponents._bridgeToObjectiveC(URLComponents) -> NSURLComponents
$s10Foundation13URLComponentsV36_unconditionallyBridgeFromObjectiveCyACSo15NSURLComponentsCSgFZ
Foundation.URLComponents._unconditionallyBridgeFromObjectiveC(NSURLComponents) -> URLComponents
$s10Foundation12URLQueryItemV19_bridgeToObjectiveCSo010NSURLQueryC0CyF
Foundation.URLQueryItem._bridgeToObjectiveC(URLQueryItem) -> NSURLQueryItem
$s10Foundation12URLQueryItemV36_unconditionallyBridgeFromObjectiveCyACSo010NSURLQueryC0CSgFZ
Foundation.URLQueryItem._unconditionallyBridgeFromObjectiveC(NSURLQueryItem?) -> URLQueryItem
Calendar <-> NSCalendar
$s10Foundation8CalendarV19_bridgeToObjectiveCSo10NSCalendarCyF
Foundation.Calendar._bridgeToObjectiveC(Calendar) -> NSCalendar
$s10Foundation8CalendarV36_unconditionallyBridgeFromObjectiveCyACSo10NSCalendarCSgFZ
Foundation.Calendar._unconditionallyBridgeFromObjectiveC(NSCalendar) -> Calendar
TimeZone <-> NSTime
$s10Foundation8TimeZoneV19_bridgeToObjectiveCSo06NSTimeC0CyF
Foundation.TimeZone._bridgeToObjectiveC() -> NSTimeZone
$s10Foundation8TimeZoneV36_unconditionallyBridgeFromObjectiveCyACSo06NSTimeC0CSgFZ
Foundation.TimeZone._unconditionallyBridgeFromObjectiveC(NSTimeZone) -> TimeZone
Swift.Error <-> NSError
$ss20_SwiftNewtypeWrapperP10Foundations5Error_p8RawValueRtzrlE19_bridgeToObjectiveCSo7NSErrorCyF
Swift._SwiftNewtypeWrapper< where A.RawValue == Swift.Error>._bridgeToObjectiveC() -> NSError
$ss20_SwiftNewtypeWrapperP10Foundations5Error_p8RawValueRtzrlE36_unconditionallyBridgeFromObjectiveCyxSo7NSErrorCSgFZ
Swift._SwiftNewtypeWrapper<Swift.Error>._unconditionallyBridgeFromObjectiveC(NSError?) -> Swift.Error
Date <-> NSDate
$s10Foundation4DateV19_bridgeToObjectiveCSo6NSDateCyF
Foundation.Date._bridgeToObjectiveC() -> NSDate
$s10Foundation4DateV36_unconditionallyBridgeFromObjectiveCyACSo6NSDateCSgFZ
Date._unconditionallyBridgeFromObjectiveC(NSDate) -> Date
$s10Foundation12DateIntervalV19_bridgeToObjectiveCSo06NSDateC0CyF
Foundation.DateInterval._bridgeToObjectiveC() -> NSDateInterval
$s10Foundation12DateIntervalV36_unconditionallyBridgeFromObjectiveCyACSo06NSDateC0CSgFZ
Foundation.DateInterval._unconditionallyBridgeFromObjectiveC(NSDateInterval?) -> DateInterval
$s10Foundation14DateComponentsV19_bridgeToObjectiveCSo06NSDateC0CyF
Foundation.DateComponents._bridgeToObjectiveC() -> NSDateComponents
$s10Foundation14DateComponentsV36_unconditionallyBridgeFromObjectiveCyACSo06NSDateC0CSgFZ
Foundation.DateComponents._unconditionallyBridgeFromObjectiveC(NSDateComponents) -> DateComponents
UUID <-> NSUUID
$s10Foundation4UUIDV19_bridgeToObjectiveCSo6NSUUIDCyF
Foundation.UUID._bridgeToObjectiveC() -> NSUUID
$s10Foundation4UUIDV36_unconditionallyBridgeFromObjectiveCyACSo6NSUUIDCSgFZ
Foundation.UUID._unconditionallyBridgeFromObjectiveC(NSUUID) -> Foundation.UUID
Other
$s10Foundation8IndexSetV19_bridgeToObjectiveCSo07NSIndexC0CyF
Foundation.IndexSet._bridgeToObjectiveC(IndexSet) -> NSIndexSet
$s10Foundation8IndexSetV36_unconditionallyBridgeFromObjectiveCyACSo07NSIndexC0CSgFZ
Foundation.IndexSet._unconditionallyBridgeFromObjectiveC(NSIndexSet) -> IndexSet
$sSo8CGVectorV10FoundationE19_bridgeToObjectiveCSo7NSValueCyF
CGVector._bridgeToObjectiveC() -> NSValue
$sSo8CGVectorV10FoundationE36_unconditionallyBridgeFromObjectiveCyABSo7NSValueCSgFZ
CGVector._unconditionallyBridgeFromObjectiveC(NSValue) -> CGVector
$sSo7CGPointV10FoundationE19_bridgeToObjectiveCSo7NSValueCyF
CGPoint._bridgeToObjectiveC() -> NSValue
$sSo7CGPointV10FoundationE36_unconditionallyBridgeFromObjectiveCyABSo7NSValueCSgFZ
CGPoint._unconditionallyBridgeFromObjectiveC(NSValue) -> CGPoint
$sSo9NSDecimala10FoundationE19_bridgeToObjectiveCSo0A6NumberCyF
NSDecimal._bridgeToObjectiveC() -> NSDecimalNumber
$sSo9NSDecimala10FoundationE36_unconditionallyBridgeFromObjectiveCyABSo0A6NumberCSgFZ
NSDecimal._unconditionallyBridgeFromObjectiveC(NSDecimalNumber) -> NSDecimal
$sSo17CGAffineTransformV10FoundationE19_bridgeToObjectiveCSo7NSValueCyF
CGAffineTransform._bridgeToObjectiveC() -> NSValue
$sSo17CGAffineTransformV10FoundationE36_unconditionallyBridgeFromObjectiveCyABSo7NSValueCSgFZ
CGAffineTransform._unconditionallyBridgeFromObjectiveC(NSValue) -> CGAffineTransform
$s10Foundation12CharacterSetV19_bridgeToObjectiveCSo011NSCharacterC0CyF
Foundation.CharacterSet._bridgeToObjectiveC() -> NSCharacterSet
$s10Foundation12CharacterSetV36_unconditionallyBridgeFromObjectiveCyACSo011NSCharacterC0CSgFZ
Foundation.CharacterSet._unconditionallyBridgeFromObjectiveC(NSCharacterSet) -> CharacterSet
$s10Foundation6LocaleV19_bridgeToObjectiveCSo8NSLocaleCyF
Foundation.Locale._bridgeToObjectiveC() -> NSLocale
$s10Foundation6LocaleV36_unconditionallyBridgeFromObjectiveCyACSo8NSLocaleCSgFZ
Foundation.Locale._unconditionallyBridgeFromObjectiveC(NSLocale) -> Locale
$sSo8_NSRangeV10FoundationE19_bridgeToObjectiveCSo7NSValueCyF
NSRange._bridgeToObjectiveC() -> NSValue
$sSo8_NSRangeV10FoundationE36_unconditionallyBridgeFromObjectiveCyABSo7NSValueCSgFZ
NSRange._unconditionallyBridgeFromObjectiveC(NSValue) -> NSRange
$sSo6CGRectV10FoundationE19_bridgeToObjectiveCSo7NSValueCyF
CGRect._bridgeToObjectiveC() -> NSValue
$sSo6CGRectV10FoundationE36_unconditionallyBridgeFromObjectiveCyABSo7NSValueCSgFZ
CGRect._unconditionallyBridgeFromObjectiveC(NSValue) -> CGRect
$sSo6CGSizeV10FoundationE19_bridgeToObjectiveCSo7NSValueCyF
CGSize._bridgeToObjectiveC() -> NSValue
$sSo6CGSizeV10FoundationE36_unconditionallyBridgeFromObjectiveCyABSo7NSValueCSgFZ
CGSize._unconditionallyBridgeFromObjectiveC(NSValue) -> CGSize
$s10Foundation12NotificationV19_bridgeToObjectiveCSo14NSNotificationCyF
Foundation.Notification._bridgeToObjectiveC() -> NSNotification
$s10Foundation12NotificationV36_unconditionallyBridgeFromObjectiveCyACSo14NSNotificationCSgFZ
Foundation.Notification._unconditionallyBridgeFromObjectiveC(NSNotification?) -> Notification
$ss20_SwiftNewtypeWrapperPs8RawValueRmzCrlE19_bridgeToObjectiveCADyF
Swift._SwiftNewtypeWrapper<AnyObject>._bridgeToObjectiveC(AnyObject) -> RawValue
$ss20_SwiftNewtypeWrapperPs8RawValueRmzCrlE36_unconditionallyBridgeFromObjectiveCyxADSgFZ
Swift._SwiftNewtypeWrapper<AnyObject>._unconditionallyBridgeFromObjectiveC(RawValue) -> AnyObject
$sSq19_bridgeToObjectiveCyXlyF
Swift.Optional._bridgeToObjectiveC() -> Swift.AnyObject
$sSq36_unconditionallyBridgeFromObjectiveCyxSgyXlSgFZ
Swift.Optional._unconditionallyBridgeFromObjectiveC(Swift.AnyObject) -> AnyObject
$ss19_BridgeableMetatypeV19_bridgeToObjectiveCyXlyF
Swift._BridgeableMetatype._bridgeToObjectiveC() -> Swift.AnyObject
$ss19_BridgeableMetatypeV36_unconditionallyBridgeFromObjectiveCyAByXlSgFZ
Swift._BridgeableMetatype._unconditionallyBridgeFromObjectiveC(AnyObject) -> _BridgeableMetatype
$s8Dispatch0A4DataV19_bridgeToObjectiveCSo16OS_dispatch_dataCyF
Dispatch.DispatchData._bridgeToObjectiveC() -> OS_dispatch_data
$s8Dispatch0A4DataV36_unconditionallyBridgeFromObjectiveCyACSo16OS_dispatch_dataCSgFZ
Dispatch.DispatchData._unconditionallyBridgeFromObjectiveC(OS_dispatch_data) -> DispatchData
$s10Foundation11MeasurementV19_bridgeToObjectiveCSo13NSMeasurementCyF
Foundation.Measurement._bridgeToObjectiveC(Measurement) -> NSMeasurement
$s10Foundation11MeasurementV36_unconditionallyBridgeFromObjectiveCyACyxGSo13NSMeasurementCSgFZ
Foundation.Measurement._unconditionallyBridgeFromObjectiveC(NSMeasurement) -> Measurement
$s10Foundation9IndexPathV19_bridgeToObjectiveCSo07NSIndexC0CyF
Foundation.IndexPath._bridgeToObjectiveC(IndexPath) -> NSIndexPath
$s10Foundation9IndexPathV36_unconditionallyBridgeFromObjectiveCyACSo07NSIndexC0CSgFZ
Foundation.IndexPath._unconditionallyBridgeFromObjectiveC(NSIndexPath) -> IndexPath
$s10Foundation20PersonNameComponentsV19_bridgeToObjectiveCSo08NSPersoncD0CyF
Foundation.PersonNameComponents._bridgeToObjectiveC(PersonNameComponents) -> NSPersonNameComponents
$s10Foundation20PersonNameComponentsV36_unconditionallyBridgeFromObjectiveCyACSo08NSPersoncD0CSgFZ
PersonNameComponents._unconditionallyBridgeFromObjectiveC(NSPersonNameComponents) -> PersonNameComponents