Tôi tự hỏi liệu điều này có ảnh hưởng đến hiệu suất hoặc mức tiêu thụ bộ nhớ không. Tôi cần một NSMutableArray, và lúc đầu tôi chỉ có thể đoán có bao nhiêu đối tượng sẽ được thêm vào. Khoảng 3 đến 5 có thể. Vì vậy, tôi tạo ra nó như thế này:Có bao nhiêu vấn đề nếu tôi tạo NSMutableArray với dung lượng = 3 thay vì dung lượng = 50?
NSMutableArray *arr = [[NSMutableArray alloc] initWithCapacity:3];
Điều gì xảy ra ở đây chính xác khi tạo dung lượng 3 chứ không phải 50 chẳng hạn? Nó sẽ là một ý tưởng tồi để tạo ra nó với công suất 1, khi biết rằng sẽ có ít nhất 20 yếu tố? Hay điều đó không quan trọng, đủ để có một số cơn đau đầu trên nó? Tôi có 10 trong số các mảng này trong ứng dụng của tôi và tất cả chúng đều phải tải lúc bắt đầu.
chi tiết tuyệt vời! các câu trả lời khác cũng tuyệt vời. tìm thấy nó không bao giờ khó khăn như vậy để chọn một như được chấp nhận. tất cả đã bỏ phiếu. cảm ơn tất cả! –
Với tất cả sự tôn trọng, tôi nghĩ câu trả lời này là không chính xác. Mặc dù dung lượng được sử dụng để gợi ý trong một số trường hợp nhất định, nhưng không phải là trường hợp tạo ra một mảng có thể thay đổi với dung lượng của gigabyte sẽ ngay lập tức phân bổ một gigabyte bộ nhớ. Nếu bạn không tin tôi, hãy tự mình thử. NSMutableArray * bigArray = [[NSMutableArray alloc] initWithCapacity: 1024 * 1024 * 1024]; nếu (! BigArray) { NSLog (@ "Array không được tạo!"); } else { NSLog (@ "Yep, nó đã được tạo."); } Nếu bạn thực sự ĐIỀN mảng này, bạn sẽ thấy mức sử dụng bộ nhớ tăng lên. Không phải trước đây. – peterb
Tài liệu cho initWithCapacity nói rằng nó trả về "một mảng được khởi tạo với đủ bộ nhớ để giữ các đối tượng numItems." Dường như có sự khác biệt giữa những gì peterb đã quan sát và những gì các tài liệu tuyên bố. – fbrereto