Khi tôi cần một mảng để sử dụng tạm thời, sự khác biệt giữa những gì:autorelease vs phát hành
1:
NSMutableArray *stuff = [[NSMutableArray alloc] init];
// use the array
[stuff release];
2:
NSMutableArray *stuff = [NSMutableArray array];
// use the array
3:
NSMutableArray *stuff = [[[NSMutableArray alloc] init] autorelease];
// use the array
Tôi thích số 2, vì nó ngắn hơn. Có lý do nào tốt để sử dụng số 1 hoặc 3 không?
Cảm ơn! Điểm tốt về việc phát hành ngay lập tức của bộ nhớ trong số 1. – keronsen
Trên iPhone, bạn sẽ thấy hầu hết mọi người sử dụng số 1 vì bộ nhớ được trả lại cho thời gian chạy sớm hơn. Trong thực tế, Apple khuyên bạn nên tránh autorelease càng nhiều càng tốt (trên iPhone). – JeremyP
Câu trả lời hay, tiết kiệm cho bit cuối cùng. Tôi muốn đặt cược rằng sự khác biệt giữa việc tạo ra một mảng mới trên mỗi lần vượt qua và loại bỏ tất cả các đối tượng là vô lượng và, rất có thể, loại bỏ tất cả các đối tượng sẽ chậm hơn một cách chậm chạp. Trong mọi trường hợp, không tối ưu hóa cho đến khi bạn có một vấn đề hiệu suất định lượng. – bbum