iOS에서 일반적인 '속성/키 편집기'보기 클래스를 작성하고 있는데, 예를 들어 [objectForKey isKindOfClass:[NSDate class]]
을 사용하여 편집 키의 유형을 확인합니다. objectForKey
이 nil
인 경우 실패 할 것이라는 것을 깨달았을 때 방금 벽을 만났습니다. 해당 속성이 nil
이라도 일반 Objective-C 속성에 대한 클래스/반환 형식을 얻을 수있는 방법이 있습니까? 나는 Objective-C 런타임에서 method_getReturnType
에 대해 알고 있지만, 내가 필요로하는 것은 과도한 소리처럼 들린다.Objective C에서 메서드의 반환 유형을 얻는 방법은 무엇입니까?
답변
수 없습니다. 메서드에 대한 반환 형식 정보를 사용할 수 있지만 개체를 반환하는 메서드의 반환 형식 인코딩은 단순히 "개체 참조"를 의미하는 @
입니다.
먼저 objectForKey! = nil인지 확인하고 isKindOfClass 검사를 계속할 수 있습니까? 객체가 nil과 같지 않은지 확인하면 오류없이 쉽게 확인하거나 안전하게 종료 할 수 있습니다.
나는 데이터의 출처 모르겠지만, 당신은 NSNull 무기 호를 대신하고 고려하는 것이 좋습니다 그리고 당신이 기술적으로 널 무언가에 NSObject의 같은 특성을 얻을 수
하지만 널 (null) 수표는 엉덩이에 더 많은 고통이된다.
그것은 개체에서 간다!
(NSNull *) 객체 = 0! = [NSNull 널]
'[NSNull null]'은'nil 그렇지. –
체크를 많이해야한다면, 항상 손쉬운 카테고리를 사용할 수 있습니다 : https://gist.github.com/707337 – mipadi
@peter하지만 적어도 그는 할 수있을 것입니다 .KindOfClass ... 나는 의미합니다. ... 나는 산들 바람을 여기에서 쏘고있다.나는 그가 누구에 대해 이야기하고 있는지를 아무도 모를 것이다. –
당신이 이해가되지 않습니다 요구하고 있습니다.
이름만으로는 메서드를 식별하지 않는다는 것을 기억하십시오. 객체는 이러한 메시지에 응답합니다 (또는 응답하지 않습니다). 메서드는 객체 (또는 클래스)의 일부로 만 단독으로 존재하지 않습니다.
개체가 없으면 개체에 메시지를 보내는 것이 반환된다는 사실을 알 수 없습니다.
ETA : 속성의 속성을 편집하기 위해 개체를 편집 할 수는 없지만 어떻게 편집 할 수 있습니까? 다른 곳에 버그가있는 것 같습니다.
나는 Objective-C 런타임에서 약
method_getReturnType
을 알고 있지만, 내가 필요로하는 것이 과잉이라고 생각합니다.
두 가지 방법이 있습니다. 비정형 속성 (@property
선언이없는 KVC 호환 접근 자 메서드)을 지원하려는 경우 정확히 필요한 것입니다. 정식 속성 (@property
) 만 신경 쓰는 경우 the property_getAttributes
function을 사용하십시오.
그는 검사 대상 개체가 0이 아니라는 것을 말하지 않고 있지만 속성 값은 0입니다. –
Ahruman : 다시 질문을 읽고, 나는 당신이 옳다고 생각합니다. –
아루만이 맞습니다. – refulgentis
- 1. Objective-C에서 반환
- 2. Objective-C에서 메서드의 매개 변수를 끝내야합니까?
- 3. "virtual"메서드의 반환 형식이 objective-c입니다.
- 4. VC++에서 시스템 유형을 얻는 방법은 무엇입니까?
- 5. Objective-C 함수는 유형을 반환합니다.
- 6. C에서 부울 반환 유형을 사용할 수 있습니까?
- 7. Objective-C에서 개체의 모든 속성을 반환
- 8. Objective-C에서 반환 유형을주의 깊게 사용하고 계십니까?
- 9. Objective-C에서 반환 구조체는 정확히 어떻게 작동합니까?
- 10. db 메서드의 반환 형식
- 11. SortedSet을 반환하는 메서드의 반환 유형을 결정하는 데 문제가 있습니다.
- 12. JAXB 바인딩 - List <T> 메서드의 반환 유형을 정의했습니다.
- 13. 인터페이스 메서드의 반환 유형을 다른 인터페이스로 정의하려면 어떻게해야합니까?
- 14. Objective-C에서 구조체를 (값으로) 전달하는 방법은 무엇입니까?
- 15. Objective-C에서 인터페이스에 개체를 설정하는 방법은 무엇입니까?
- 16. Objective-C에서 배열에 변수를 추가하는 방법은 무엇입니까?
- 17. Objective-C에서 AppleScript 함수를 복제하는 방법은 무엇입니까?
- 18. Objective-C에서 클래스를 동적으로로드하는 방법은 무엇입니까?
- 19. Objective-C에서 XML을 수정하는 방법은 무엇입니까?
- 20. objective-c에서 PDF를 편집하는 방법은 무엇입니까?
- 21. Objective C에서 배열 인덱스를 결정하는 방법은 무엇입니까?
- 22. objective-c에서 사용자 입력을 시뮬레이트하는 방법은 무엇입니까?
- 23. objective-c에서 Perl 해시를 구현하는 방법은 무엇입니까?
- 24. Objective-C에서 다음 코드를 향상시키는 방법은 무엇입니까?
- 25. Objective-C에서 객체의 변수에 액세스하는 방법은 무엇입니까?
- 26. objective-c에서 html 파일을 만드는 방법은 무엇입니까?
- 27. objective-C에서 NSRunLoop을 사용하는 방법은 무엇입니까?
- 28. Objective C에서 복식을 비교하는 방법은 무엇입니까?
- 29. Objective-C에서 정적 변수를 선언하는 방법은 무엇입니까?
- 30. Objective-C에서 NSNotifications를 C++ 클래스로받는 방법은 무엇입니까?
매우 사실이며, 여기에 해결책이 없다면 장기적으로해야 할 일이 있습니다.하지만 사용자가없는 곳에서 개체를 만들 수 있기를 바랍니다. 예를 들어,이 경우 데이터보고 시스템을 구축하고 처음에는 시작일과 종료일을 nil로 설정 했으므로 [NSDate date]로 쉽게 수정할 수 있지만 여전히 유연성을 원합니다. – refulgentis
언제! = nil해도 아무 것도 할 수 없게 될지 모르겠습니다. 당신이 어떤 종류의 수퍼 리플렉션을하려고하지 않는 한, 그것들에 대한 잘못된 언어 인 –