Hãy nói rằng tôi có một tài sản mạnh như vậy:Có an toàn khi gán một thuộc tính cho kết quả của bộ khởi tạo tự động phát trong khi sử dụng ARC không?
@interface Foo
@property (strong, nonatomic) NSArray *myArray;
@end
Và, trong initializer của tôi, tôi đặt myArray như vậy:
myArray = [NSArray array];
là an toàn không? ARC sẽ chăm sóc đúng cách giữ lại myArray cho tôi chứ?
Lý do tôi hỏi là tôi có một dự án trong đó myArray không phải là được giữ lại đúng cách trong trường hợp này và tôi nhận được quyền truy cập bộ nhớ kém trên đường.
Nhưng, nếu tôi sử dụng
myArray = [[NSArray alloc] init];
sau đó tất cả là tốt.
Bởi "trong bộ khởi tạo của tôi", bạn có nghĩa là phương thức 'init [With ...]' của lớp học, đúng không? –
Bạn không sử dụng thuộc tính trong nhiệm vụ của mình, bạn đang chỉ định trực tiếp cho trình sao lưu (chính xác trong bộ khởi tạo). Nhưng nó không quan trọng, ARC sẽ giữ lại mảng này một trong hai cách. (Kể từ khi ivar sao lưu cũng phải là __strong) –