2013-04-10 48 views

Trả lời

20

CCArray mô phỏng NSMutableArray. Nó là một trình bao bọc xung quanh một mảng C (bộ nhớ đệm). Nó được phát triển và được sử dụng trong nội bộ bởi cocos2d vì NSMutableArray được coi là quá chậm. Tuy nhiên, cải thiện hiệu suất là tối thiểu. Bất kỳ trường hợp sử dụng nào (tính năng) của CCArray mà bản thân cocos2d không sử dụng vẫn là nguồn tiềm ẩn của các vấn đề, bao gồm các vấn đề khó hiểu và khó gỡ lỗi hoặc các đặc tính hiệu năng khủng khiếp.

Khía cạnh quan trọng nhất về hiệu suất quan trọng là đọc chuỗi tuần tự. Trong my latest tests đó là một khu vực mà CCArray (không còn?) Trội. Cụ thể liệt kê nhanh: NSMutableArray nhanh hơn khoảng 33 lần!

CCArray là một ví dụ hoàn hảo tại sao người ta không nên phát minh lại bánh xe, đặc biệt là khi nói đến các lớp lưu trữ khi đã có sẵn một giải pháp ổn định, đã được chứng minh và nhanh (NSMutableArray). Bất kỳ lợi thế tốc độ nào mà nó có thể đã từng mất lâu rồi. Những gì còn lại là một hành vi thời gian chạy, bạn sẽ không muốn đối phó với, bao gồm một số đặc điểm hiệu suất cực kỳ xấu (chèn, liệt kê nhanh).

Ngắn câu chuyện ngắn: không sử dụng CCArray trong mã của riêng bạn! Đối xử với CCArray giống như một lớp nội bộ, riêng không được sử dụng trong mã người dùng (trừ trường hợp không thể tránh khỏi, tức là mảng con).

NSMutableArray là triển khai tham chiếu mảng mọi người nên sử dụng vì nó được kiểm tra rất tốt, được ghi lại và ổn định (cả về hành vi và tốc độ thời gian chạy).

1

CCArray http://www.cocos2d-x.org/embedded/cocos2d-x/d9/d2e/classcocos2d_1_1_c_c_array.html

Trong cocos2d-x CCArray là có thể thay đổi, tức là bạn có thể thêm các yếu tố cho nó. Để tạo cá thể CCArray không có dung lượng, bạn có thể sử dụng hàm tạo CCArray :: array(). CCMutableArray là vùng chứa dựa trên mẫu có thể lưu trữ các đối tượng cùng loại. CCArray lưu trữ các đối tượng dưới dạng các thể hiện CCObject, vì vậy bạn phải cast chúng sau khi nhận được từ cá thể CCArray

Lớp NSArray chứa một số phương thức được thiết kế đặc biệt để dễ dàng tạo và thao tác các mảng trong các chương trình Objective-C.