Tôi đã bắt đầu phát triển ứng dụng iOS đầu tiên của mình với Xcode 4.2 và đang nhắm mục tiêu iOS 5.0 với mẫu "ứng dụng tiện ích" (mẫu đi kèm với FlipsideViewController).Làm cách nào để thay thế các tham chiếu yếu khi sử dụng ARC và nhắm mục tiêu iOS 4.0?
Tôi đọc rằng vì ARC là một tính năng biên dịch, nên nó cũng tương thích với iOS 4, vì vậy tôi đã cố nhắm mục tiêu ứng dụng của mình lên 4.3 và thử biên dịch nó. Khi tôi làm như vậy, tôi nhận được lỗi này:
FlipsideViewController.m: lỗi: Automatic Reference Đếm Vấn đề: Mục tiêu triển khai hiện tại không hỗ trợ tài liệu tham khảo __weak tự động
Nó là tham khảo dòng này:
@synthesize delegate = _delegate;
đó biến được khai báo là:
@property (weak, nonatomic) IBOutlet id <FlipsideViewControllerDelegate> delegate;
tôi hiểu rằng "tài liệu tham khảo yếu s "không được hỗ trợ trong iOS 4, nhưng tôi thực sự không hiểu tại sao tôi muốn sử dụng tham chiếu yếu để bắt đầu, cũng như tôi có thể tìm ra cách viết lại những thứ để tránh sử dụng nó, trong khi vẫn tận dụng lợi thế của ARC (sau khi tất cả, nó phải làm việc với iOS 4 VÀ 5 phải không?)
Cảm ơn lời khuyên. Bạn nói "để nhắm mục tiêu hệ điều hành cũ ...". Điều này có nghĩa là tôi chỉ nên sử dụng unsafe_unretained trong các bản dựng ứng dụng cũ hơn 5.0? Hoặc tôi có thể chỉ sử dụng unsafe_unretained trong mã của tôi, và xây dựng nó để nhắm mục tiêu cả 4.x và 5.x? –
@Mason - 'unsafe_unretained' được hỗ trợ trong cả iOS 4.x và 5.0, vì vậy nó cung cấp cho bạn khả năng tương thích ngược. Nếu bạn đang thực hiện một phiên bản 5.0 chỉ, bạn có thể chuyển sang 'weak' để tận dụng lợi thế của sự an toàn bổ sung mà nó mang lại cho bạn. –
Tôi đã thử không an toàn, tuy nhiên, nó vẫn hoạt động. Tuy nhiên, tôi nhận được rất nhiều cảnh báo như '' ** __NSAutoreleaseNoPool(): Đối tượng 0x564bd90 của lớp __NSArrayM được tự động phát hành mà không có hồ bơi tại chỗ - chỉ rò rỉ "* ', điều đó bình thường? – fifth