2013-05-08 26 views
5

Nếu tôi có các đoạn mã sau:Điều tra nhanh có đánh giá biểu thức thu thập trên mỗi lần lặp lại không?

 for (UIView *view in [myArray copy]) 

Điều đó có nghĩa rằng tôi đang gửi thông điệp copy để myArray trên mỗi lần lặp, hoặc Objective-C là đủ thông minh để làm copy chỉ một lần, và sử dụng nó cho toàn bộ vòng lặp?

+3

Không khó giải thích chút nào. Bạn đã hỏi câu hỏi này rất rõ ràng! – matt

+2

Câu trả lời là 'copy' chỉ được thực hiện một lần. Biểu thức bên phải được đánh giá trước khi hoạt động 'in' được khởi tạo. –

+0

So sánh http://stackoverflow.com/questions/3882254/objective-c-for-each-fast-enumeration-evaluation-of-collection hoặc http://stackoverflow.com/questions/12281461/is-this-an- không hiệu quả-cách-sử-dụng-liệt kê nhanh. –

Trả lời

5

Nó không phải là vấn đề "thông minh", nhưng có, biểu thức [myArray copy] được đánh giá một lần lên phía trước.

Các vấn đề liên quan