2014-02-24 1 views
0

저는 다소 흥미로운 문제가 있습니다. 나는 iPhone 4, 4s, 5, 5s에서 작동하고 싶은 iOS 7 용 비트 보드를 사용하여 체스 엔진을 만들고 있습니다. 지금까지 iOS 64 비트 iPhone 시뮬레이터에서 모든 테스트를하고 있었지만 제 휴대폰에서이 테스트를 실행하기로 결정했으며 모든 검은 체스 조각이 누락되었습니다. 나는 이것이 내 iPhone이 iPhone 5이고 이것이 64 비트 숫자에 대한 bitwise 연산과 관련된 몇 가지 문제를 가지고 있다고 생각하여 신속하게 알아 냈습니다. 이 앱이 iPhone 4, 4s 및 5에서 작동하도록하는 데 사용할 수있는 해결 방법이 있습니까? 아니면이 iPhone 5s 전용으로 만들어야합니까? 그것이 사실이라면 오히려 좌절 할 것입니다.iPhone 4 및 5의 64 비트 정수에 대한 비트 보드 비트 연산?

업데이트 : 개체 리터럴로 nsarrays에서 컬렉션을 저장하기 때문에 추가 명시 적으로 형식이 모두 부호없는 long long 정수인 반면 추가 조사가 끝난 후에 objectForKey를 호출 한 후 integerValue를 호출하면 문제가되는 것으로 확인되었습니다. , 이것은 NSInteger를 반환합니다. 그러나 32 비트 전화기에서 NSInteger는 64 비트가 필요할 때 32 비트입니다. NSArray에서 64 비트 정수를 저장하고 검색하는 방법이 있습니까?

+0

비트를 저장하는 방법을 정의 할 때 특히 코드를 표시하십시오. – Arkku

+0

@Arkku - 비 원자 속성으로 u_int_64 (부호없는 long long int typef를 Bitboard)로 저장합니다. 나는 지금 일하고있다. 그러나 내가 오늘 밤 집에 돌아갈 때 약간의 코드를 게시 할 것이다. – AttilaTheFun

답변

0

좋아요, 나는 마침내 무슨 일이 일어 났는지 알아 냈습니다. nsarrays에 nsnumbers로 비트 보드 콜렉션을 저장하고 integerValue를 사용하여 이들을 가져 왔습니다. integerValue가 프로세서를 기반으로하는 32 또는 64 비트 정수인 nsinteger를 반환하기 때문에 64 비트 장치에서 정상적으로 작동합니다. 일단 모든 함수 호출을 unsignedLongLongValue로 변경하면 매력처럼 작동합니다.