2012-02-05 21 views
7

Có danh sách các lớp trong iOS không thể được gọi bằng con trỏ __weak khi sử dụng tính năng đếm tham chiếu tự động (ARC) không?Lớp học iOS nào không hỗ trợ tham chiếu yếu bằng 0?

của Transitioning to ARC Release Notes của Apple chỉ liệt kê các lớp học Mac cho đến nay:

Những lớp học không hỗ trợ tài liệu tham khảo zeroing-yếu?

Bạn không thể hiện tạo zeroing-yếu đề cập đến các trường hợp của các lớp sau:

NSATSTypesetter, NSColorSpace, NSFont, NSFontManager, NSFontPanel, NSImage, NSMenuView, NSParagraphStyle, NSSimpleHorizontalTypesetter, NSTableCellView, NSTextView, NSViewController, NSWindow, và NSWindowController. Ngoài ra, trong OS X, không có lớp nào trong khung nền tảng AV hỗ trợ các tham chiếu yếu.

Có danh sách tương tự cho các lớp UIKit hoặc thậm chí là các lớp dành riêng cho iOS nói chung không?

Cảm ơn.

+0

Bắt đầu từ 10.8, các trường hợp của NSWindow, NSWindowController và NSViewController có thể được trỏ đến bởi tham chiếu yếu ARC: https://developer.apple.com/library/mac/releasenotes/AppKit/RN-AppKitOlderNotes/index.html# 10_8SharingService –

Trả lời

5

Nếu bạn cố gắng tạo thành một tham chiếu yếu cho đối tượng không hỗ trợ tham chiếu yếu, chương trình sẽ chết ngay lập tức. Điều này được đề cập trong các tiến bộ mục tiêu Mục tiêu-C ở chiều sâu video từ WWDC 2011. Vì vậy, bạn nên biết ngay lập tức nếu bạn tìm thấy một lớp học không hỗ trợ họ.

Tôi khá chắc chắn việc thiếu đề cập đến trong Chuyển sang Ghi chú phát hành ARC có nghĩa là tất cả các lớp học UIKit đều an toàn. Tôi không chắc liệu cảnh báo về các lớp học AV Foundation có áp dụng cho iOS hay không. Tôi đã thử nghiệm tạo tham chiếu yếu đến AVCaptureSession trên cả iOS 5 và Lion và không bị lỗi. Tôi đã thử nghiệm tạo tham chiếu yếu cho một số NSWindow trên Lion và nó bị lỗi với thông báo cannot form weak reference to instance (0x102232ef0) of class NSWindow.

+0

Không, chương trình không chết _immediately_ (như khi khởi động) - chỉ chết khi tham chiếu được thực hiện. Cũng như đã đề cập, ít nhất con cháu của "UITableViewCell' không tương thích, được thử nghiệm trong iOS 5 iPad Simulator. – adib

+0

@adib vui lòng bao gồm trong câu hỏi của bạn thông báo lỗi thực tế mà bạn nhận được khi cố gắng tạo tham chiếu yếu đến một ô bảng. –

+0

'UITableViewCell' cho phép tham chiếu yếu. Tôi đã thử nghiệm nó. Nếu bạn có ngoại lệ, hãy đăng thông báo trên bảng điều khiển và theo dõi ngăn xếp. –

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