Sự khác biệt giữa điều này là gì:
@property (nonatomic, weak) id <SubClassDelegate> delegate;
và điều này:
@property (nonatomic, assign) id <SubClassDelegate> delegate;
Tôi muốn sử dụng tài sản cho các đại biểu.
Câu trả lời:
Sự khác biệt duy nhất giữa weak
và assign
là nếu đối tượng mà một thuộc weak
tính trỏ đến được phân bổ, thì giá trị của weak
con trỏ sẽ được đặt thành nil
, để bạn không bao giờ gặp rủi ro khi truy cập vào 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 phân bổ từ bên 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 Objective-C, nếu bạn đang ở trong một môi trường mà bạn có thể sử dụng weak
, thì bạn nên sử dụng nó.
UITableView
có assign
cho đại biểu của nó:@property (nonatomic, assign) id <UITableViewDelegate> delegate;