2012-11-15 4 views
4

Objective C 내의 클래스에서 리플렉션을 사용하여 런타임에 사용할 수있는 속성을 결정할 수 있기를 원합니다. 지금 내가하고 싶은 무엇iOS 용 Objective C에서 속성 반영

NSString *str = NSStringFromClass([object class]); 

를 사용

I 클래스 비슷한 일을 다시 클래스에 가서 속성뿐만 아니라 이러한 속성이 입력 한 내용으로 사용할 수있는 볼이 결과를 사용하는 것입니다 .

+0

왜 특정 속성에 대해 런타임에 실제 속성/메서드를 사용할 수 있는지 프로토콜을 사용하지 않는 이유는 무엇입니까? – holex

+0

속성은 데이터베이스 스키마를 기반으로 런타임에 결정되므로 동적 메서드 호출은 특정 유즈 케이스에 대해 코드가 적고 융통성이 적습니다. 또한; 비록 내가 성취하려고 노력하고 있는지 전혀 알지 못하지만 어떻게 투표 하느냐는 흥미 롭습니다. – bigtunacan

+0

어려운 느낌이 들지 않습니다. 나는 당신의 데이터베이스가 그러한 "역동적 인"것이고 그것만이 유일하고 전능 한 해결책이 될지 의심 스럽다. – holex

답변

7

이 도움이 될 수 있음 :

당신은 각 속성에서 다음

objc_property_t * class_copyPropertyList(Class cls, unsigned int *outCount) 

및 class_copyPropertyList

을 사용하여 클래스의 속성 목록을 얻을 수 있습니다, 당신은 property_getName 기능과를 사용하여 속성 이름을 얻을 수 있습니다 property_getAttributes 함수를 사용하는 속성 속성 (읽기 - 쓰기 속성을 필터링해야하는 경우)

+2

[Objective-C 런타임 프로그래밍 가이드] (http://developer.apple.com/library/ios/#documentation/Cocoa/Conceptual/ObjCRuntimeGuide/Articles/ocrtPropertyIntrospection.html#//apple_ref/doc/uid/)를 확인하십시오. TP40008048-CH101-SW24)와 [Objective-C Runtime Reference] (https://developer.apple.com/library/ios/#documentation/Cocoa/Reference/ObjCRuntimeRef/Reference/reference.html)를 참조하십시오. –

+0

직접 질문에 대한 답변을 주신 분께 감사 드리며, 많은 정보를 제공해 준 매우 유익한 가이드에게도 감사드립니다. – bigtunacan

관련 문제