본문 바로가기

iOS

[iOS] 클래스의 모든 프로퍼티들이 궁금할 땐?

  디버깅을 하다보면 특정 인스턴스에 어떤 프로퍼티들이 어떤 값들로 할당되어 있는지 로그로 남겨 한 눈에 보고싶을 때가 있습니다. 이 때 사용하면 유용한 방법을 공유하도록 하겠습니다!

 

extension NSObject {
    func properties() -> [String] {
        var results: [String] = []

        var count: UInt32 = 0
        let myClass: AnyClass = self.classForCoder

        // 프로퍼티들 리스트 조회
        let properties = class_copyPropertyList(myClass, &count)

        for index in 0..<count {
            let property = properties?[Int(index)]

            // 프로퍼티 이름 조회
            let cname = property_getName(property!)

            let name = String(cString: cname)
            results.append(name)
        }

        // 메모리 해제
        free(properties)

        return results
    }
}

 

사용할 때,

 

let sampleView: UIView = UIView()

sampleView.layer.properties().forEach { key in
    print("\(key)\t\(sampleView.layer.value(forKey: key) ?? "nil")")
}

 

참조

Declared Properties - Apple Developer

태그