배열의 개체에 대한 메모리 할당과 관련하여 질문이 있습니다. 객체 배열을 만들려고하는데 컴파일 시간에 필요한 객체 수를 알 수 없으므로 필요한 것보다 많은 메모리를 예약하고 싶지 않습니다.개체 배열에 대한 메모리 할당 - 내 이해가 유효합니까?
내가 원하는 것은 필요에 따라 메모리를 할당하는 것입니다. 내가 이것을하고 싶은 방법은 사용자가 "추가"버튼을 클릭하면 배열이 하나의 추가 객체만큼 증가하고 새로운 객체에 필요한 메모리가 할당됩니다. 목표 C의 내 초보자의 이해에
이 (내가 20 년 전 대한 전문 프로그래머, 그리고 최근에 다시 코드를 작성하기 시작했다) 나는 다음과 같은 코드 세그먼트와 함께 올라와있다 :첫째, 선언 내 목적 : 변수 i가 1의 값으로 밖으로 시작하고 추가 버튼을 때마다 증가 : (참고 : 사용자가 추가 버튼을 클릭하면 다음
NSObject *myObject[1000]; // a maximum number of objects.
, 그것은 할당 코드와 메소드를 실행 클릭)
++i
myObject[i] = [[NSObject alloc] init];
따라서 모든 1000 개의 배열 객체가 아니라 실제로 필요한 객체에만 메모리를 할당하고 싶습니다.
정확하게 해석합니까? 즉, 선언에 명시된 배열 요소의 수는 배열 요소의 가능한 최대 수이며 해당 시점에 할당되는 메모리 양은 아니라고 해석합니다. 그것은이 정확하고 이론적으로 선언입니다 :
NSObject *myObject[10000];
선언보다 더 많은 메모리 당겨하지 않을까요 :
NSObject *myObject[5];
이
누군가가 내가 제대로이 과정을 이해하고있어 확인 할 수 이 나를 계몽을 내 마음에 섞여있어. :)
고마워요!
NSMutableArray 또는 CFMutableArray를 사용하지 않는 이유는 무엇입니까? 효율적으로 객체를 추가합니다. 다음은 CFArray 소스입니다. http://www.opensource.apple.com/source/CF/CF-635/CFArray.c –
팁을 가져 주셔서 감사합니다. 그게 아마 내가해야 할 일이라고 확신합니다. 나는 지금까지 그 중 누구도 들어 본 적이 없었다. 흥미롭게도, 이론상 바퀴를 다시 발명 한 것임을 알고 있지만, 메모리 할당에 대한 나의 이해가 정확합니까? –
Objective-C 객체의 C 배열을 사용하지 마십시오. 나쁜 생각입니다. 언어가 제공하는 배열 객체를 사용하십시오. 나는 Objective-C 서적을 읽기를 강력히 권유한다. 가장 좋은 것 (IMHO)은 Stephen Kochan의 [Programming In Objective-C] (http://www.amazon.com/dp/0321811909/)입니다. –