2012-07-08 33 views
12

Tôi tạo một dự án có hỗ trợ ARC bằng trình hướng dẫn dự án Xcode. So với một chương trình không hỗ trợ ARC, tôi không nhận thấy bất kỳ sự khác biệt nào. Có bất kỳ gợi ý nào có thể cho tôi biết liệu chương trình của tôi có hỗ trợ ARC không?Làm cách nào để biết liệu chương trình của tôi có bật ARC hay không?

Tôi đang sử dụng XCode 4.2.1 Build 4D502

+4

Điều này không bình thường: Bạn đã có ba câu trả lời hoàn toàn chính xác, hữu ích và độc đáo. :) –

Trả lời

25

Bạn có thể sử dụng __has_feature, có thể đăng nhập liệu dự án có ARC trong giao diện điều khiển như thế này:

#if __has_feature(objc_arc) 
    // ARC is On 
    NSLog(@"ARC on"); 

#else 
    // ARC is Off 
    NSLog(@"ARC off"); 

#endif 

Ngoài ra, thay vì chỉ đăng nhập liệu ARC đang bật, hãy thử làm trình biên dịch nâng cao một lỗi nếu ARC đã bật (hoặc tắt) như thế này:

#if ! __has_feature(objc_arc) 
    #error This file must be compiled with ARC. Use -fobjc-arc flag (or convert project to ARC). 
#endif 
+0

Tôi không thể tìm thấy menu Mục tiêu? Đây có phải là menu của XCode không? – user705414

+0

"Mục tiêu" có nghĩa là mục nhập nhiều nhất có tên ứng dụng của bạn trong cây tệp Xcode. – CodaFi

+0

Cảm ơn qegal, không có gì trong cờ biên dịch của tôi. Không có vấn đề gì tôi chọn bằng cách sử dụng ARC hay không trong trình hướng dẫn. – user705414

5

hoặc để kiểm tra chỉ một lần, thêm này trong mã của bạn:

NSString* dummy = [[[NSString alloc] init] autorelease]; 

Điều này sẽ gây ra lỗi nếu bạn đang sử dụng ARC. Nếu có, ARC được bật, tất cả đều ổn và bạn có thể xóa lại.

18

Nếu bạn chỉ muốn biết một lần nếu dự án của bạn có ARC, tôi khuyên bạn nên sử dụng câu trả lời của jpalten. Nếu bạn muốn mã của bạn chỉ xây dựng với ARC trên, tôi đề nghị của qegal.

Tuy nhiên, nếu bạn muốn biết nơi ở Xcode khung cảnh sống:

  1. Chọn dự án của bạn trong hàng hải. Thao tác này sẽ mở trình chỉnh sửa dự án.
  2. Trong trình chỉnh sửa dự án, hãy chọn mục tiêu của bạn.
  3. Trong trình chỉnh sửa dự án, hãy nhấp vào Thiết lập bản dựng (nếu chưa được chọn).
  4. Trong trình chỉnh sửa dự án, hãy nhấp vào hộp tìm kiếm và nhập OBJC_ARC.

này sẽ để lại một dòng duy nhất thể hiện trong Cài đặt Xây dựng, một trong hai Objective-C Automatic Reference Counting hoặc CLANG_ENABLE_OBJC_ARC (tùy thuộc vào việc bạn đang hiển thị giới thiệu cách thiết lập hoặc tên). Nếu nó được đặt thành CÓ, bạn có ARC bật.

Đây là lựa chọn mục tiêu của bạn về việc ARC có được sử dụng hay không. Lưu ý rằng mỗi tệp có thể được biên dịch với một cài đặt khác. Đây là không phải là những gì bạn đã hỏi, nhưng vì chúng tôi đã có ba câu trả lời, tôi nghĩ rằng tôi sẽ đầu ra một thứ tư có thể. :)

Để xem những tập tin ghi đè lên các thiết lập ARC:

  1. Chọn dự án của bạn trong hàng hải. Thao tác này sẽ mở trình chỉnh sửa dự án.
  2. Trong trình chỉnh sửa dự án, hãy chọn mục tiêu của bạn.
  3. Trong trình chỉnh sửa dự án, hãy nhấp vào Tạo các giai đoạn (không phải Cài đặt bản dựng).
  4. Mở rộng Nguồn biên dịch giai đoạn xây dựng.

Tại đây, bạn có thể thấy cờ trình biên dịch cho từng tệp. Các tệp có thiết lập có hoặc không sử dụng ARC sẽ bao gồm hoặc -fno-objc-arc hoặc -fobjc-arc, để chỉ định MRR hoặc ARC tương ứng.

+0

được đánh dấu là hữu ích cũng như thông báo cho người mới biết rằng ARC có thể bị ghi đè đối với một số tệp nhất định. Điều này có thể tiết kiệm cho tôi rất nhiều không quan trọng với các tập tin lớp học trước ARC của tôi! Có vấn đề gì với điều này không? – cate

+0

Không có gì trình phân tích tĩnh sẽ không chỉ ra - chủ yếu, đảm bảo mã không được biên soạn bởi ARC tuân theo quy ước đếm tham chiếu (đối với mọi thứ được trả về là +1 hoặc tự động phát hành). –

1

thêm cờ trình biên dịch "-fno-objc-arc" cho tất cả các tệp .m trong giai đoạn xây dựng

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