2009-07-29 9 views
15

Sự khác biệt là gì?NSMutableSet vs NSMutableArray

Trong ngữ cảnh của tôi, tôi cần có khả năng tự động thêm và xóa đối tượng. Người dùng nhấp vào các hàng của một bảng kiểm tra và tắt và do đó thêm hoặc loại bỏ đối tượng được tham chiếu khỏi danh sách.

Đoán ngẫu nhiên là mảng có mục được lập chỉ mục trong khi bộ không có chỉ mục?

+0

Cảm ơn các nhận xét! – Brenden

+1

Hãy chắc chắn để upvote câu trả lời đã giúp bạn, thay vì để lại một bình luận. – amattn

Trả lời

29

An NSSet/NSMutableSet không giữ các mục theo bất kỳ thứ tự cụ thể nào. An NSArray/NSMutableArray lưu trữ các mục theo một thứ tự cụ thể. Nếu bạn đang xây dựng chế độ xem bảng, bạn chắc chắn nên sử dụng một mảng làm nguồn dữ liệu bạn chọn.

+0

Ngoài ra, nếu thứ tự không liên quan và bạn thường xuyên hỏi một mục cụ thể thuộc về nhóm hay không, sẽ hiệu quả hơn khi sử dụng 'NSSet' thay vì' NSArray'. – GoRoS

23

Ngoài ra, NSMutableSet đảm bảo rằng tất cả các đối tượng là duy nhất.

NSMutableArray hoạt động tốt với UITableView vì các phần tử có chỉ mục, vì vậy bạn có thể trả về [số đếm mảng] để nhận số hàng bảng hoặc [mảng objectAtIndex: rowNumber] để dễ dàng liên kết phần tử với hàng.

+0

Đây là điều tôi không nhận ra – Brenden

3

Ngoài ra, theo the documentation, thử nghiệm cho thành viên đối tượng nhanh hơn với NSSets.

Bạn có thể sử dụng bộ như một thay thế cho các mảng khi thứ tự của yếu tố không quan trọng và hiệu quả trong việc kiểm tra xem một đối tượng được chứa trong tập là một xem xét-trong khi mảng được sắp xếp, thử nghiệm cho thành viên chậm hơn so với các bộ.

0

Có ba điểm khác biệt chính. 1) Bộ không có thứ tự 2) Không có chỉ mục & 3) Không thể có giá trị trùng lặp trong đó Mảng được sắp xếp, được lập chỉ mục & có thể lưu trữ các giá trị trùng lặp.