C에서 # object o;
을 선언하면 o=(float)5.0;
또는 o="a string."
을 할당 할 수 있습니다. Objective-C에 해당하는 항목이 있습니까? id
을 사용하려했지만 float 또는 integer와 같은 기본 유형을 사용하지 않습니다. 도와 줘서 고맙다.객관적인 C에 대한 C#의 객체와 동일한 것은 무엇입니까?
답변
Objective-C에는 CLR의 단어에 "통합 유형 시스템"이 없습니다. 즉, C의 수퍼 세트로서 Objective-C의 기본 유형은 객체 인스턴스보다 다른 개의 흉포입니다. id
유형은 모든 객체 인스턴스에 대한 참조 (실제로는 OS X/iPhone Objective-C 런타임의 포인터)를 저장할 수 있습니다. C의 기본 유형 (예 : int
, float
등)은 id
에 할당되도록 NSValue
또는 NSNumber
으로 묶어야합니다. 물론 이것은 정확히 C# 컴파일러가 수행하는 작업입니다. C#에서는 복싱 변환을 명시 적으로 수행 할 필요가 없습니다.
float val;
id obj = [NSNumber numberWithFloat:val];
...
float v = [obj floatValue];
과 같은 코드는, 만약 불행하게도 자세한 현대의 기준으로 제 2의 천성이 될 것이다.
감사합니다 배리. 나는 당신이 제안한 것을 정확하게 끝내었다. 배열에 c 유형 데이터의 혼합 백을 저장해야하므로 NSNumber로 변환 된 데이터 유형을 쉽게 감지 할 수 있습니까? –
'NSNumber'는'NSValue'의 서브 클래스입니다. 따라서'-objCType'을 사용하고 C 문자열 비교를 통해 실제 숫자 유형을 결정할 수 있습니다 ... 꽤 오래된 학교이지만 작동합니다. 이것은 Objectie-C가 동적으로 타이핑하고 C의 정적 타이핑을 서로 느낄 수있는 욕구가있는 경우입니다. –
정말 그런 것은 아닙니다. NSNumber
또는 NSValue
을 사용하여 원시 데이터 형식을 개체로 처리 할 수 있습니다. NSString
은 문자열을 처리합니다. 이 모든 변수를 id
유형 변수에 할당 할 수 있지만 올바른 클래스의 init
메소드를 사용하여 변수를 만들어야합니다.
정확합니다. id
은 ObjC 개체 참조에서만 작동합니다. id 참조가있는 int를 참조하려면 NSNumber
에 입력해야합니다. 덧붙여 말하자면, C#은 그 프리미티브를 boxing하는 것입니다.
위로 나의 날에 우리는 눈에서 오르막길 15 마일을 걸어야했다. void pointers. 오, 우리는 StackOverflow가 없었어요!
실제로 C# 데이터 형식은 각각의 클래스에 대한 별칭이므로 개체 유형에 할당 할 수 있습니다. 예를 들어 int는 실제로 Int32라는 클래스입니다.
@Barry가 앞서 언급했듯이 Objective-C의 경우는 그렇지 않습니다.
- 1. C의 CONST/C에
- 2. 객관적인 c에 nsstring
- 3. 객관적인 c에 대몬 작성하기
- 4. 객관적인 c에 sqlite3_stmt 전달
- 5. 목표 C에서 함수 포인터를 C에 전달하는 것과 동일한 것은 무엇입니까?
- 6. C#에서 Java의 캔버스 객체와 동일한 것은 무엇입니까?
- 7. 객관적인 c의 싱글 톤
- 8. 객관적인 C에 이식 C++ 게임
- 9. 객관적인 c에 datetime 문제가 있습니다
- 10. 객관적인 c에 butterworth 필터를 구현하십시오
- 11. 객관적인 c에 c 코드 사용
- 12. 객관적인 c에 다른 레이어 사용
- 13. 사전에있는보기 컨트롤러 - 객관적인 c에 있음
- 14. 전화 객관적인 C의 다른
- 15. 객관적인 c의 생성자
- 16. 객관적인 C의 문서 디렉토리
- 17. 객관적인 C의 현지화 문제
- 18. 객관적인 C의 컨트롤을 통해 반복
- 19. objective-c에 객관적인 @property 속성 추가
- 20. 객관적인 c의 배열에서 요소에 액세스
- 21. 객관적인 C의 정적 이니셜 라이저
- 22. 객관적인 c의 싱글 톤 클래스
- 23. 객관적인 c에 AppleScript 텍스트 구분 기호
- 24. C의 인수 목록에서 의미하는 것은 무엇입니까?
- 25. 어떻게 객관적인 C의 외부 IP를 얻을
- 26. 객관적인 - C의 이벤트에 콘센트를 연결하는 방법
- 27. 객관적인 c의 reg 표현식이 새 줄에서 실패합니다.
- 28. 객관적인 C의 차이점은 self.variable과 variable assignment이다.
- 29. C에 대한 질문! 운영자
- 30. 객관적인 c 또는 c에 읽기 - 쓰기 잠금이 필요합니다
'할 수있다'는 의미가 아닙니다. 객체의 자유로운 사용은보다 특정한 유형을 사용하여 컴파일 타임에 잡힐 수있는 런타임 오류를 유발할 수 있습니다. –
나는 이것이 필요한 유일한 사람이 아니라고 확신한다. 그 이유는 내가 플랫폼을 개발하고 있기 때문입니다. 고객이 더 적은 일을 할 수 있도록 더 많은 일을하려고했습니다. –