2011-12-07 33 views
6

Khi tôi chạy mã sử dụng @autorelease từ khóa trên iOS 4.3.x, nó sẽ phát ra lỗi này.Cần có phiên bản iOS nào để sử dụng @autoreleasepool?

dyld: lazy symbol binding failed: Symbol not found: _objc_autoreleasePoolPush 
    Referenced from: /Users/Eonil/Library/Application Support/iPhone Simulator/4.3.2/Applications/3782382E-293A-4D5E-86E6-28BE35CF6048/EonilCocoaComplementsTester.app/EonilCocoaComplementsTester 
    Expected in: /Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator4.3.sdk/System/Library/Frameworks/Foundation.framework/Foundation 

dyld: Symbol not found: _objc_autoreleasePoolPush 
    Referenced from: /Users/Eonil/Library/Application Support/iPhone Simulator/4.3.2/Applications/3782382E-293A-4D5E-86E6-28BE35CF6048/EonilCocoaComplementsTester.app/EonilCocoaComplementsTester 
    Expected in: /Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator4.3.sdk/System/Library/Frameworks/Foundation.framework/Foundation 

Tôi nghĩ từ khóa chỉ thay thế việc tạo/xóa tự động tạo hồ bơi rõ ràng. Dù sao nó không phải là, và ném một lỗi. Nó chỉ hỗ trợ trong phiên bản iOS cụ thể? Vậy tôi có thể kiểm tra thông tin phiên bản về từ khóa này ở đâu?

+1

này có thể hữu ích http://stackoverflow.com/questions/8069570/autoreleasepool-make-errors – RolandasR

Trả lời

4

Bạn đang đề cập đến @autoreleasepool?

Bạn có thể sử dụng @autoreleasepool trong ứng dụng có mục tiêu xây dựng iOS 4.3.x nếu bạn đang sử dụng Xcode 4.2 và SDK iOS 5. Mặc dù transitioning to ARC guidelines nói rằng "ARC giới thiệu một câu lệnh xây dựng cho ngữ pháp Objective-C" trong @autoreleasepool, có thể gợi ý ARC là bắt buộc, nó tiếp tục nói rằng "Cú pháp này có sẵn trong tất cả các chế độ Objective-C".

Mặc dù tôi không nghĩ đó là tài liệu đặc biệt rõ ràng, điều này có nghĩa là bạn có thể sử dụng cú pháp @autoreleasepool cả khi có và không có ARC — nếu bạn đang sử dụng SDK iOS 5.

+0

@autoreleasepool không đòi hỏi ARC. xem .. http://stackoverflow.com/q/7950583/927947 – NJones

+0

Thú vị, đã cập nhật câu trả lời của tôi để sửa lỗi này và làm nổi bật các phần chính của tài liệu được liên kết mà lần đọc đầu tiên có thể bị hiểu sai ... như tôi đã làm . :) –

3

chỉ thử nghiệm @autoreleasepool {} trên iPhone thế hệ đầu tiên chạy iOS3.0 - hoạt động mà không có vấn đề

+0

Đó là sự thật, chỉ cần thử trên iPhone 3G của tôi iOS 3.1.3, không có vấn đề – JomanJi

3

Có vẻ là một lỗi trong Simulator.

Đặt mục tiêu triển khai thành 4.2 thay vì 4.2.1 làm việc cho tôi.

enter image description here

+0

Tôi đã có cùng một vấn đề chính xác và điều này giải quyết nó cho tôi cũng – wasabi

+0

này làm việc cho tôi. +1 cho điều đó :) – pahan

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