Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Save philosopherdog/36f1f03a04db612bda9890e38be1267e to your computer and use it in GitHub Desktop.
Save philosopherdog/36f1f03a04db612bda9890e38be1267e to your computer and use it in GitHub Desktop.
CustomStringConvertible prints memory address
import Foundation
extension CustomStringConvertible {
var description: String {
var description: String = "\(type(of: self))("
let selfMirror = Mirror(reflecting: self)
for child in selfMirror.children {
if let propertyName = child.label {
description += "\(propertyName): \(child.value), "
}
}
description += "<\(Unmanaged.passUnretained(self as AnyObject).toOpaque())>)"
return description
}
}
class Person: CustomStringConvertible {
let name: String
let age: Int
init (name: String, age: Int) {
self.name = name
self.age = age
}
}
let alex = Person(name: "Alex", age: 20)
print(alex) // Person(name: Alex, age: 20, <0x000060c000058d20>)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment