Tôi vừa chuyển đổi một dự án cũ sang ARC bằng cách sử dụng tái cấu trúc tự động của Xcode.Sau khi chuyển đổi tự động ARC: Gán đối tượng được giữ lại cho thuộc tính không an toàn; đối tượng sẽ được phát hành sau khi gán
@property (nonatomic, retain) NSMutableArray *cards;
đã được thay thế bởi:
@property (nonatomic) NSMutableArray *cards;
này có ý nghĩa bởi vì những gì tôi đã đọc là "mạnh" là trạng thái mặc định. Tuy nhiên, dòng sau là cho tôi những lỗi trong tiêu đề:
self.cards = [[NSMutableArray alloc] initWithCapacity:54];
Các lỗi được giải quyết bằng cách thêm strong
trở lại trong nơi giữ lại từng là:
@property (nonatomic, strong) NSMutableArray *cards;
Tuy nhiên ... nếu tôi cần để quay lại và đặt strong
vào mỗi khai báo @property là retain
... tại sao việc cấu trúc lại ARC loại bỏ tất cả?
Thực ra, ngữ nghĩa quản lý bộ nhớ mặc định là 'assign', chứ không phải' strong', đó là lý do tại sao bạn nhận được thông báo cảnh báo. – jlehr
jlehr không đúng về ngữ nghĩa quản lý bộ nhớ mặc định. nhưng anh ta cũng không sai. trước LLVM 3.1 & ARC mặc định thực sự đã được gán. nhưng ngày nay nó mạnh mẽ. điều này không may là rất kém tài liệu. xem câu trả lời của nschum. – stigi
Bây giờ mặc định là mạnh, cảnh báo sẽ biến mất. Tại sao nó không? –