2012-02-24 22 views

Trả lời

145

Sự khác biệt duy nhất giữa weakassign là nếu đối tượng một weak điểm tài sản để được deallocated, thì giá trị của con trỏ weak sẽ được thiết lập để nil, do đó bạn không bao giờ có nguy cơ truy cập rác. Nếu bạn sử dụng assign, điều đó sẽ không xảy ra, vì vậy nếu đối tượng được deallocated từ dưới bạn và bạn cố gắng truy cập nó, bạn sẽ truy cập rác.

Đối với các đối tượng mục tiêu-C, nếu bạn đang ở trong một môi trường nơi bạn có thể sử dụng weak, thì bạn nên sử dụng nó.

+16

Bạn có biết tại sao một số lớp khung công tác Cocoa Touch vẫn đang sử dụng gán cho đại biểu không? Ví dụ: đại biểu của [UISearchDisplayController] (https://developer.apple.com/library/ios/documentation/UIKit/Reference/UISearchDisplayController_Class/Reference/Reference.html#//apple_ref/occ/instp/UISearchDisplayController/delegate) vẫn được gán. Tại sao nó không được cập nhật? – Pwner

+0

@Pwner trông giống như nó đã không được chấp nhận trong iOS 8.0 – Stavash

+0

Đây là ví dụ không được chấp nhận: ngay cả 'UITableView' có' chỉ định' cho đại biểu của nó: '@property (nonatomic, assign) id delegate;' –

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