I found some documentation of the types returned by method_copyReturnType() in the Objective-C runtime API. These mysterious characters are called Type Encodings in Objective-C and are unique codes represented by one or fewer characters.
I note it here for my own benefit.
c= charB= BOOL / bool / _bools= shorti= intI= unsigned int?l= longq= long longL= unsigned longC= unsigned charS= unsigned shortQ= unsigned long long (bitmask?)f= floatd= doublev= voidVv= void*= char*@= id object:= SEL#= Class^TYPE= pointerrTYPE= constN= inoutbNUMBER= NUMBER bits?= unknown type[TYPE]= array{NAME=type...}= structure(NAME=type...)= union{CGRect={CGPoint=dd}{CGSize=dd}}= CGRect{CGPoint=dd}= CGPoint{CGSize=dd}= CGSize
To dynamically retrieve information from a method name using the Objective-C Runtime API in Swift