xcode 4.2 에서 LLVM으로 컴파일러가 바뀌면서 armv6를 지원하지 않는데

그래서 그런가 버그가 종종 발견된다.

이번에 발견된 버그는 CGSize에 잘못된 값이 들어가는 현상!!

아이팟 2세대에서 확인해보니 유동적인 UI프레임이 엉망진창으로 배열되고 있었다. 

이 현상은 release/debug 모드가 아니라 appsotre 로 build 했을 때 발생했는데 

사람들은 컴파일러의 버그가 아닌가 예상하고 있다. 

그래서 임시방편으론 CGSize 변수를 한번 더 재정의 한것

sizeOfCell = CGSizeMake(sizeOfCell.width, sizeOfCell.height); 

이 현상은 CGPoint에서도 발생한다고 한다.

armv6를 지원하는 앱을 개발중이라면 고려해야할 부분이리라. 


>> Other C flags 에 -mno-thumb 을 주면 된다는데 맞낭? 
+설명

xcode4.2에서는 armv6를 지원하지 않으므로 빌드 셋팅에서 아키텍처에서 armv6를 추가해주면

왠만한건 잘 돌아가는데 앞에서 언급한 math관련 클래스들에서 문제가 발생.

LLVM compiler 3.0의 최적화 작업에서 문제가 생기는 것으로 추정.

LLVM compiler 3.0의 최적화 작업을 꺼 주는 옵션이 -mno-thumb

빌드 셋팅에서 Other C flags 항목에 이 옵션을 추가해주면 잘 돌아간단다.
(잘 안되면 clean을 한번 해주는 것이 ㅋㅋ)

아 구글링의 힘!! ㅋㅋ 

옵션을 줘도 되지만 그림과 같이 optimization level 단에서 debug/release/appstore을 분기 처리하면 더 안정된 서비스를 제공할 수 있을 듯.
armv6를 추가 하면 아래 그림과는 좀 다르게 바뀌는데 armv6냐 armv7이냐에 따라 optimization을 사용할지 none을 할지 설정하면 됨. 아 뭔가 오늘 아무것도 안한건 아니라서 좋구나 - 뭐... 결국은 과장님이 찾아내신거지만... 하나 건졌으니 좋아좋아!!

 

+ Recent posts