2012-06-07 4 views
1

목표 C에 iOS 프로그램을 작성하고 있는데 다음과 같은 특성을 가진 배열이 필요합니다.대물 렌즈 c의 크기를 유지하는 동적 배열을 만드는 방법은 무엇입니까?

1) 런타임에 형상을 결정해야합니다. 내가 그 인덱스에 머물 필요가있는 특정 인덱스에 개체를 삽입 할 때

2) 수 있어야한다는 목표 - C 클래스

3) 내부 속성 또는 글로벌로 저장합니다. 나는 인덱스 5에 삽입 할 경우 예를 들어는, 객체 인덱스 5에서 무엇이든 덮어 이 요소의 어떤 이동 또는 (자바 배열이 작동하는 방식과 유사) 다른 요소 나는했습니다

을하지 않는다 필요 NSMutableArray 보았다하지만 당신이 삽입 할 때 요소를 이동하기 때문에 내가 위에서 설명한 무엇을 맞지 않는 것. 나는 또한 NSString *myArray = malloc(10 * sizeof(NSString *));을 시도했지만 이것은 브릿지 캐스트 (Bridged Cast)를 요구하는 것과 관련된 오류를 발생시킵니다. 그리고 나는 그것이 무엇인지 모른다.

중요한 경우 ARC를 사용하고 있습니다.

답변

8

1) nameOfMyArray = [[NSMutableArray alloc] initWithObjects:@"obj1", @"obj2", "obj3",nil];

3) 대신 삽입 작업을하고, 왜 그냥 교체 작업을하지?

[nameOfMyArray replaceObjectAtIndex:0 withObject: @"newObject here"]; 
+0

크기를 알고 있지만 처음에는 내용을 알지 못하면 NSNulls로 배열을 채울 수도 있습니다. – UIAdam

+0

참고 : 배열의 경계를 먼저 확인하고 배열의 크기가 충분하지 않은 경우 nils를 추가해야합니다. – mkb

+0

코드를 업데이트하여 initWithObjects : @ "obj1", @ "obj2", @ "obj3", nil]; 마지막에 아무 것도 없애고 초기화에 올바른 코드를 사용하십시오. – Christian

3

일반적인 NSMutableArray 동작처럼 들리겠습니까?

replace 메서드를 사용하면 아무 것도 이동하지 않습니다. 귀하의 코드는 C와 유사하고 Objective-C처럼 보이지 않습니다. Objective-C 객체가 어떻게 사용되어야 하는지를 이해하기 위해 책이나 문서를 읽는 것이 좋습니다. Objective-C 객체를 결코 malloc하지 않을 것입니다. 대신 alloc 클래스 메소드를 사용해야합니다.

관련 문제