2014-06-08 18 views
5

Tôi đang cố gắng tìm ra phương pháp tránh các chu kỳ lưu giữ khi một số tham chiếu trong chu trình được giữ trong bộ sưu tập. Ý tưởng của tôi là tạo ra một wrapper struct:Buộc tham số kiểu chung là loại lớp?

struct Weak<T> { 
    unowned let value: T 

    init(_ value: T) { 
     self.value = value 
    } 
} 

Vấn đề ở đây là unownedweak thành viên phải của một loại lớp (main.swift:3:17: 'unowned' cannot be applied to non-class type 'T'; consider adding a class bound), nhưng không có lớp cha hợp lý cho tôi để yêu cầu T kế thừa từ.

Có cách nào để buộc T thuộc loại lớp mà không kế thừa từ một lớp khác cụ thể không?

Trả lời

8

thử:

struct Weak<T:AnyObject> 
+0

Đó làm việc, cảm ơn! Đây có phải là bất cứ nơi nào trong tài liệu hướng dẫn? –

+0

Đúng, đọc phần về generics cho cú pháp của định nghĩa chung. Thực hiện tìm kiếm trong iBook trên AnyObject để biết thêm thông tin về giao thức đó. –

Các vấn đề liên quan