2010-07-09 5 views
1

이 연습은 괜찮습니까?NSArray 대 배열

NSArray* myarray[3] = {nil,nil,nil} 

... 

myarray[0] = some NSArray 

또는 NSArray를 사용하는 것이 좋습니다.

NSArray* myarray = [NSArray...] ? 
... 
[myarray addObject:..] 

답변

2

귀하의 필요에 따라 다릅니다. 어떤 방법 으로든 작동하지만, 일반적으로 Objective-C 객체와 C 구조를 혼합하면 두 개의 다른 메모리 모델을 통해 정상 성을 유지해야하므로 광기가 발생합니다. 유지/해제 및 malloc/free.

나는 또한 일반적으로 다차원 배열을 완전히 피한다. 예를 들어, 배열의 3x4 배열은 12 개 항목의 단일 배열로 나타낼 수 있습니다. 2,3의 항목은 실제로 (2 + (3 * width))입니다.

NSArrays에는 "구멍"을 사용할 수 없습니다. 필요한 경우 NSNull 객체를 사용하여 구멍을 나타낼 수 있습니다. 또는 구멍을 허용하는 NS [Mutable] Array의 하위 클래스를 만듭니다.

+0

왜 당신이 다차원 배열을 피하는 지 궁금합니다. 그들에 대한 논쟁은 아니지만 당신은 내가 존경하는 대답을하는 사람이고 왜 그 이유에 관해 더 많은 통찰력을 원합니다. – yabada

+0

다차원 배열은 다중 할당을 의미하며 구멍이 없다고 가정하면 이러한 여러 배열은 구현 단순성 측면에서별로 구매하지 않습니다. – bbum

0

제 의견으로는 NSArray가 이미 당신을 돕기위한 몇 가지 고급 기술을 캡슐화했기 때문에 제가 갈 것입니다.

당신이 복잡하고 데이터 구조와 알고리즘을 내장하고 싶다면 NSArray를 사용할 수 있다고 생각합니다.

2 개의 프로그래밍 언어 C와 obj-C를 가능한 한 많이 섞어 사용하지 않도록 노력합니다.