xin lỗi nếu đó là câu hỏi ngớ ngẩn. Tôi mới bắt đầu học nhanh. Tôi chủ yếu sử dụng php cho công việc hàng ngày của mình. Swift sách giáo khoa Apple Store của sử dụng ví dụ sau (i biến đổi nó thành một phiên bản ngắn hơn) để chứng minh việc sử dụng tài liệu tham khảo yếu:Tại sao Swift không hủy bỏ tham chiếu vòng tròn (chu kỳ tham chiếu mạnh) tự động
class Person {
var apartment: Apartment?;
}
class Apartment {
weak var tenant: Person?;
}
var john: Person?; john = Person();
var number73: Apartment?; number73 = Apartment();
john!.apartment = number73; number73!.tenant = john; //circular reference here
john = nil; number73 = nil; //deference from static variable names
Trong định nghĩa lớp Căn hộ cao cấp ở trên, nếu yếu từ khóa được lấy ra từ var tenant, nó tạo chu trình tham chiếu mạnh mẽ trong mã sau để hai trường hợp không được GC xử lý. Tuy nhiên, nó xuất hiện với tôi GC thực sự không cần dấu hiệu của tham chiếu yếu. Rõ ràng là hai trường hợp không thể được liên kết từ bất kỳ biến nào trong phạm vi hiện tại hoặc từ bất kỳ biến tĩnh nào, do đó chúng an toàn để được xử lý.
Tại sao liều Swift buộc cú pháp? Ưu điểm duy nhất tôi có thể tìm ra là từ khóa yếu làm nổi bật logic nên mã dễ đọc hơn.
"Swift không sử dụng bộ sưu tập rác đánh dấu và quét. Nó sử dụng tính toán tham chiếu" để giải thích. –