2010-11-11 26 views

Trả lời

27

[NSMutableDictionary dictionary] cũng giống như [[[NSMutableDictionary alloc] init] autorelease]

+4

Cảm ơn. Đối với lập trình iPhone, tôi nghĩ rằng [[NSMutableDictionary alloc] init] được ưu tiên. –

+5

@Stephen: ??? Tại sao bạn nghĩ theo cách đó? Chắc chắn, trong nhiều trường hợp, bạn có thể sẽ giải phóng mọi thứ ngay lập tức sau khi bạn kết thúc với chúng nhưng bạn cũng có thể giết chết một nhóm tự động sau mỗi chu kỳ n trong một vòng lặp chặt chẽ để quản lý việc sử dụng bộ nhớ. Tuy nhiên, như bạn đã nói, nhận xét của bạn quá chung chung là đúng. –

6

Sự khác biệt là nếu bạn sử dụng NSMutableDictionary* myDictionary = [[NSMutableDictionary alloc] init] bạn sẽ phải sau gọi [myDictionary release] khi bạn đang thực hiện với nó. Nếu không, bạn sẽ bị rò rỉ bộ nhớ. Nếu bạn sử dụng phương pháp khác, bạn không phải lo lắng về quản lý bộ nhớ.

+1

Bạn vẫn phải lo lắng về việc quản lý bộ nhớ với các phiên bản tự động phát hành. Xem xét ví dụ: tạo ra nhiều mảng trong một vòng lặp chặt chẽ mà không cần thoát khỏi nhóm autorelease tương ứng. –

4

vì lợi ích của sự hoàn chỉnh, một vài năm sau chúng tôi đã nhận cách ngắn khác vào Từ điển alloc:

NSMutableDictionary* dictionary = @{}.mutableCopy; 
Các vấn đề liên quan