2012-01-01 2 views
0

나는 int의 2D 배열을 게임의 맵 형식으로 사용하고 있습니다. 지도의 가로 길이는 변경되지 않지만 세로 길이는 변경할 수 있습니다. 이 때문에 실제 데이터 저장을 위해 C 배열의 효율성을 사용해야하며 컨테이너에 NSMutableArray를 사용해야합니다. 그러나, 나는 이것에 대해 어떻게 가야할지 모르겠다. NSArray에 C 배열을 저장할 수도 있습니까? 나는 다양한 방법을 시도했지만 아무도 작동하지 않는 것 같습니다.NSArray에 C 배열의 int를 추가 할 수 있습니까?

+1

배열의 최대 길이가 있어야하나요? 내가 생각하기에 왜 C 어레이를 그대로 사용하지 않는가? – andershqst

답변

2

NSArray는 개체 만 저장합니다. int 배열을 데이터 저장소로 사용하는 사용자 정의 NSArray 하위 클래스를 정의하고 int를 저장하고 NSArray의 일반 개체 인터페이스 (즉, int를 NSNumbers로 변환)로 변환하는 특수 메서드를 정의 할 수 있습니다. way overly 대부분의 경우 복잡합니다. 하지만 일반 NSArray를 사용하면 객체가 달라 붙어 있습니다.

+0

척의 대답은 정확하지만 아마도 역시 나쁜 생각 일 것입니다. 커스텀 NSArray 서브 클래스를 사용하고 boxing/unboxing의 오버 헤드를 수행하는 것보다 C 배열을 저장하는 훨씬 간단한 방법이 있습니다. –

+0

그냥 분명히하기 위해, 나는 이것이 당신이하고 싶은 것이 보통 아니란 @ 케빈 발라드에 동의한다. 나는 네가 할 수있는 몇 가지 경우를 생각할 수 있지만 일반적으로는 그렇지 않다. 이것이 어레이를 움직이게하는 다소 복잡한 해결책이라고 생각했지만, 답을 더 명확하게 편집 할 것입니다. – Chuck

1

아니요, 객체는 NSArray에만 저장할 수 있습니다. NSMutableData 거기에 C 배열을 백업하는 바이트를 저장하려고 시도 할 수 있지만 약간 어색합니다.

0

vector과 같은 일부 C++ STL 컨테이너를 사용할 수 있습니다. 이는 필요에 따라 어레이를 확장/축소하기위한 인터페이스뿐만 아니라 성능이 뛰어납니다.

관련 문제