2010-07-09 2 views
4

[이 특정 주제를 제외하고는 개발자가 Java 같은 프로세서 아키텍처를 거의 완전히 무시할 수있게 해주는 언어로 성장했기 때문에 나는이 전체 주제를 오해 할 수도있다. 일부 개념이 잘못되어 있으면 저를 시정하십시오.]float 대신 CGFloat를 사용 하시겠습니까? 그들은 그것을하지 않는다.

here 읽기 서로 다른 프로세서 아키텍처 (64 비트 핸들이 다르게 플로트) 내 코드를 미래 입증한다 때문에 조언을 대신 플로트, 말의 CGFloat을 사용하는 것 같다. 그것이 맞다면, 왜 UISliderfloat을 직접 (값으로) 사용합니까? 어쨌든 아키텍처가 변경되는 경우 어쨌든 내 코드가 올바르지 않기 때문에 float을 읽고 CGFloat으로 변환하는 것이 잘못 되었습니까?

답변

6

CGFloatfloat 일 경우 단지 typedef입니다. 이것은 CGFloat에 대한 유연성을 제공하여 길 아래에서 다른 무언가가 될 수 있습니다. 그래서 코드를 사용하면 코드가 미래 보장됩니다. Objective-C는 많은 유형으로 이것을 수행합니다. NSInteger이 또 다른 예입니다.

그들은 서로 바꿔 사용할 수 있지만 UISlider의 경우 Apple이 dogfooding 인 경우에는 나타나지 않는다고 동의합니다.

+0

+1 그래서 슬라이더의 값을 읽고 쓰는 코드에 어떤 영향이 있다고 생각합니까? 그냥 부유물을 사용합니까? –

+0

플로트 (float)로 사용하면 플로트 (float)로 사용됩니다.) 일관성은 여기서 중요합니다. 이상적으로는 전체적으로'CGFloat'가 될 것입니다. –

2

CGFloat는 Core Graphics의 일부이며, 지난 몇 년 동안 크게 변화 한 픽셀 값 (TRS-80 애호가라면 누구나?)에 사용되었습니다. 따라서 CGFloat를 사용하여 디스플레이 관련 드로잉 값을 지정하는 것이 좋습니다.

슬라이더의 값은 그래픽과 관련이 없습니다. 그것은 0.0 ~ 1.0이며, float로 정확하게 처리 할 수 ​​있으며, 아마도 16 비트 부동 소수점으로 처리 할 수 ​​있습니다.

+0

아키텍처가 변경 되더라도 float은 float입니다. –

+0

실제로 float은 아키텍처에 따라 다릅니다 (endianess 참조). 프로그래밍 관점에서 볼 때, 항상 같은 방식으로 작동한다는 것을 보장 할 수 있습니다. 마찬가지로, CGFloat는 실제 디스플레이와 아키텍처가 무엇이든 관계없이 컴퓨터 그래픽 관련 계산에 대해 항상 좋은 결과를 제공합니다. – PapaSmurf

관련 문제