반응형
디버깅을 하다보면 특정 인스턴스에 어떤 프로퍼티들이 어떤 값들로 할당되어 있는지 로그로 남겨 한 눈에 보고싶을 때가 있습니다. 이 때 사용하면 유용한 방법을 공유하도록 하겠습니다!
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")")
}
참조
반응형
'iOS' 카테고리의 다른 글
[iOS] Swift 참조 타입이 앱 기동 시간에 안 좋은 영향을 끼치는 이유 (번역) (1) | 2021.03.14 |
---|---|
[iOS] DispatchSourceTimer로 일시정지 구현이 쉬운 타이머 만들기 (0) | 2020.04.15 |
[iOS] NSPredicate 문법 정리 (1) | 2020.01.27 |
[iOS] fullScreen? overFullScreen? over가 붙으면 무엇이 다를까 (UIModalPresentationStyle) (0) | 2020.01.15 |
[iOS] 로컬 푸쉬 알림 구현 방법 (Local Notification) (1) | 2020.01.11 |