2011-10-31 32 views
31

Tôi mới sử dụng Xcode 4.2 và tôi chưa hoàn toàn nâng cấp lên ARC. Tuy nhiên, tôi đã đọc rằng @autoreleasepool thay thế việc sử dụng thủ công các bể tự động và thực hiện một số phép thuật đặc biệt dưới mui xe để chơi đẹp với ARC.@autoreleasepool không có ARC?

Tuy nhiên, khi tôi bắt đầu dự án mới trong Xcode 4.2, cụ thể với tùy chọn ARC đã tắt tắt Tôi vẫn nhận được câu lệnh @autoreleasepool trong mã mẫu.

Thỏa thuận ở đây là gì?

Trả lời

50

Từ http://clang.llvm.org/docs/AutomaticReferenceCounting.html#autoreleasepool:

@autoreleasepool có thể được sử dụng trong các đơn vị dịch phi ARC, với ngữ nghĩa tương đương.

và Greg Parker nói [1][2]:

LLVM 3.0 @autoreleasepool { ... } là nhanh hơn nhiều so NSAutoreleasePool nếu mục tiêu triển khai của bạn được cập nhật. Không yêu cầu ARC. (…) Luôn hoạt động nhưng nhanh hơn với mục tiêu triển khai OS X 10.7 hoặc iOS 5.0.

Vì vậy, bạn có thể sử dụng @autoreleasepool bất kể ARC và sẽ nhanh hơn NSAutoreleasePool trên OS X v10.7 + và iOS 5.0+.

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