2012-11-13 18 views
6

Khi trạng thái tiêu đề, tại sao là UIKit đại biểu (assign) thay vì (weak)?Tại sao các đại biểu UIKit "chỉ định" thay vì "yếu"?

Xem UIPopovercontroller.h ví dụ:

@property (nonatomic, assign) id <UIPopoverControllerDelegate> delegate;

Theo như tôi có thể nói điều này cung cấp không có lợi ích đối với tài sản một cách yếu ớt giữ lại nhưng rất nhiều vấn đề mà các đại biểu cần phải quản lý nó là cuộc đời riêng như một đại biểu . Đây có phải là vấn đề tương thích ngược không?

Cảm ơn

Trả lời

10

Vì hầu hết các thuộc tính đó đều tồn tại trước khi iOS SDK hỗ trợ các thuộc tính yếu. Thuộc tính weak chỉ được hỗ trợ trên iOS 5.0 trở lên.

Tôi sẽ phải đoán rằng khi iOS 4.x trở về trước là lịch sử, tất cả sẽ được cập nhật thành weak.

+0

Con trỏ 'yếu' cũng được đặt thành' nil' khi lớp được dealloc'ed, đó là sự khác biệt thực tế duy nhất với 'assign' – jere

+2

@jere Chính xác hơn, con trỏ yếu được đặt thành' nil' khi các đối tượng mà họ tham chiếu được deallocated. Chỉnh sửa: có vẻ như bạn đã chỉnh sửa nhận xét của mình. – rmaddy

+0

Tôi hy vọng chúng ta có may mắn nhất trên iOS 8 ... –

-3

Đại biểu không bao giờ được giữ lại. Đó là một con đường dễ dàng đến một chu kỳ giữ lại.

+2

Câu hỏi về yếu so với chỉ định. – rmaddy

+0

Không hữu ích, nhưng đúng) – Tim

2

UIKit vẫn được xây dựng không có ARC, do đó không có lớp UIKit nào có thể sử dụng tham chiếu yếu. Ngay cả các lớp mới hơn như UICollectionView sử dụng gán cho các thuộc tính ủy nhiệm của họ vì lý do này.

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