2012-02-14 28 views

Trả lời

15

Hành vi bạn chỉ định xác định cách bộ nhớ được quản lý cho loại đó. Nếu bạn chọn giữ lại hoặc sao chép đối tượng sẽ được phát hành khi cá thể của lớp bạn thêm tham chiếu liên quan đến được deallocated. Điều đó làm cho việc giữ lại và sao chép các hoạt động hành vi được ưu tiên cho các lớp Objective-C. Gán cũng hữu ích để tránh giữ lại chu kỳ miễn là bạn đặt tham chiếu đến nil khi thực hiện với đối tượng.

Constants

OBJC_ASSOCIATION_ASSIGN Chỉ định một tham chiếu yếu đến đối tượng liên quan.

OBJC_ASSOCIATION_RETAIN_NONATOMIC Chỉ định một tham chiếu mạnh mẽ cho đối tượng được liên kết và liên kết là không được thực hiện một cách nguyên tử.

OBJC_ASSOCIATION_COPY_NONATOMIC Chỉ định rằng đối tượng liên quan được sao chép và liên kết không được thực hiện nguyên tử.

OBJC_ASSOCIATION_RETAIN Chỉ định tham chiếu mạnh đến đối tượng được liên kết và liên kết được tạo thành nguyên tử.

OBJC_ASSOCIATION_COPY Chỉ định rằng đối tượng liên quan được sao chép, và liên kết được tạo thành nguyên tử.

+0

đó là nhanh :) nhưng nó không phải là câu trả lời tôi đang tìm kiếm. tôi nên có cụ thể hơn trong câu hỏi của tôi, sry. – radiospiel

+0

@ra diospiel Tôi đã nói rằng ở trên, giữ lại hoặc sao chép sẽ phát hành đối tượng cho bạn "đối tượng sẽ được phát hành khi lớp bạn thêm tham chiếu liên quan đến được phát hành" – Joe

+0

@JoshCaswell Cảm ơn, đó sẽ là thuật ngữ chính xác. – Joe

2

Mặc dù bạn đã trả lời câu hỏi của riêng bạn, vẫn còn, vì bạn không bao gồm các văn bản tài liệu riêng của mình, và các trang web mà bạn liên quan đến không còn có sẵn, ở đây nó là để thuận tiện của người khác:

Từ Apple Objective-C Runtime Reference

void objc_removeAssociatedObjects(id object)

Loại bỏ tất cả các hiệp hội cho một đối tượng nhất định.

Mục đích chính của chức năng này là để làm cho nó dễ dàng để trả về một đối tượng đến một "trạng thái nguyên sơ”. Bạn không nên sử dụng chức năng này cho loại bỏ chung của các hiệp hội từ đối tượng, vì nó cũng loại bỏ hiệp hội rằng khác khách hàng có thể bổ sung vào đối tượng. Thông thường bạn nên sử dụng objc_setAssociatedObject với một giá trị nil để rõ ràng một hiệp hội.

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