Tôi đã chuyển dự án của mình sang ARC và tôi không hiểu liệu tôi có phải sử dụng strong
hoặc weak
cho IBOutlets hay không. Xcode làm điều này: trong xây dựng giao diện, nếu một tạo ra một UILabel
ví dụ và tôi kết nối nó với trợ lý soạn thảo để ViewController
của tôi, nó tạo này:yếu hoặc mạnh cho IBOutlet và
@property (nonatomic, strong) UILabel *aLabel;
Nó sử dụng strong
, thay vào đó tôi đọc một hướng dẫn trên trang web RayWenderlich nói điều này:
Nhưng đối với hai thuộc tính cụ thể này, tôi có các gói khác. Thay vì
strong
, chúng tôi sẽ khai báo chúng làweak
.
@property (nonatomic, weak) IBOutlet UITableView *tableView;
@property (nonatomic, weak) IBOutlet UISearchBar *searchBar;
Weak
là mối quan hệ khuyến khích cho tất cả ổ cắm tài sản. Các đối tượng chế độ xem này đã là một phần của chế độ xem của bộ điều khiển chế độ xem và không cần phải giữ lại ở nơi khác. Lợi thế lớn tuyên bố các cửa hàng của bạnweak
là nó giúp bạn tiết kiệm thời gian bằng cách viết phương thức viewDidUnload .Hiện nay chúng tôi
viewDidUnload
trông như thế này:
- (void)viewDidUnload
{
[super viewDidUnload];
self.tableView = nil;
self.searchBar = nil;
soundEffect = nil;
}
Bây giờ bạn có thể đơn giản hóa nó như sau:
- (void)viewDidUnload
{
[super viewDidUnload];
soundEffect = nil;
}
Vì vậy, sử dụng weak
, thay vì strong
, và loại bỏ các thiết lập để nil trong videDidUnload
, thay vào đó Xcode sử dụng thứ e strong
và sử dụng self... = nil
trong số viewDidUnload
.
Câu hỏi của tôi là: khi nào tôi phải sử dụng strong
và khi weak
? Tôi cũng muốn sử dụng cho mục tiêu triển khai iOS 4, vậy khi nào tôi phải sử dụng unsafe_unretain
? Bất cứ ai cũng có thể giúp giải thích cho tôi tốt với một hướng dẫn nhỏ, khi sử dụng strong
, weak
và unsafe_unretain
với ARC?
cảm ơn câu trả lời – Piero
bạn nói rằng, cho iboutlet nếu tôi sử dụng mạnh tôi phải sử dụng nil trong viewdidunload, và cho bộ nhớ thấp tôi không có rò rỉ, thay vào đó với yếu tôi không phải sử dụng nil trong videwdidunlaod, và cho bộ nhớ thấp cảnh báo tốt hơn là giải pháp mạnh hay yếu? – Piero
Giống nhau. Sử dụng 'weak' cho phép bạn tiết kiệm thời gian viết mã (hai dòng trong trường hợp của bạn) bằng tay. Nhưng, Xcode làm điều đó cho bạn. Quan điểm cá nhân của tôi. Tôi thích sử dụng 'strong'. –