Để tạo một từ điển trống, tôi có nên gọi [NSMutableDictionary dictionary]
hoặc [[NSMutableDictionary alloc] init]
không?Để tạo một từ điển trống, [NSMutableDictionary dictionary] hoặc [[NSMutableDictionary alloc] init]?
Sự khác biệt là gì?
Để tạo một từ điển trống, tôi có nên gọi [NSMutableDictionary dictionary]
hoặc [[NSMutableDictionary alloc] init]
không?Để tạo một từ điển trống, [NSMutableDictionary dictionary] hoặc [[NSMutableDictionary alloc] init]?
Sự khác biệt là gì?
[NSMutableDictionary dictionary]
cũng giống như [[[NSMutableDictionary alloc] init] autorelease]
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ớ.
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. –
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ảm ơn. Đối với lập trình iPhone, tôi nghĩ rằng [[NSMutableDictionary alloc] init] được ưu tiên. –
@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. –