2014-04-10 1 views
0

현재 armv7, armv7s 및 arm64를 지원하는 앱이 있습니다. A7 64 비트 칩이 출시되기 전에 프로젝트를 시작한 모든 것이 32 비트 아키텍처 만 지원하려는 유일한 의도로 설계되었습니다.iOS 32 및 64 비트 아키텍처의 올바른 반환 유형

64 비트 장치로 빌드 할 때 충돌하는 리턴 유형 경고가 나타납니다. heightForRowAtIndexPath : 예를 들어,

- (float) tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
    return 45.0; 
} 

이있는 tableView의 구현에 반환 형식을 충돌하는 ':'CGFloat 플로트 '나는 두 배로 반환 형식을 전환 할 경우

'대 '(일명'더블) ' 64 비트 지원을 위해 32 비트 시스템을 빌드 할 때 double이 아닌 float가 필요하다고 말하는 것과 같은 반대 상황이 발생합니다.

어떻게이 두 가지를 올바르게 지원합니까? this article에 설명 된대로 64 비트로 변환하고 32 비트 용으로 빌드 할 때 컴파일러에서 발생하는 경고를 무시해야합니까?

답변

3

복사는 프로토콜의 메소드 서명 :

- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath 

CGFloat은 앱에서 당신은 다음과 같이 정의된다 CGFloat 유형을 사용할 필요가

+0

빠른 응답에 감사드립니다! – anders

1

에서 실행되는 구조를 처리하기 위해 적절하게 정의된다 :

#if defined(__LP64__) && __LP64__ 
# define CGFLOAT_TYPE double 
# define CGFLOAT_IS_DOUBLE 1 
# define CGFLOAT_MIN DBL_MIN 
# define CGFLOAT_MAX DBL_MAX 
#else 
# define CGFLOAT_TYPE float 
# define CGFLOAT_IS_DOUBLE 0 
# define CGFLOAT_MIN FLT_MIN 
# define CGFLOAT_MAX FLT_MAX 
#endif 

CGFloat 매크로입니다 32 개 비트 플랫폼에서 부동 밖으로 잠수정 및 64 개 비트 플랫폼을 두 번.

관련 문제