2016-12-08 21 views

Trả lời

12

Thông qua tham chiếu. Bạn có thể kiểm tra nó. Tuyên bố:

class A{} 
struct B { let a = A()} 

thì:

let b = B() 
print("A = \(unsafeAddressOf(b.a))")//0x0000600000019450 
let b_copy = b 
print("A = \(unsafeAddressOf(b_copy.a))")//0x0000600000019450 
5

Tất cả các thuộc tính của một struct được sao chép (như nếu bạn đã gán (=) mỗi tài sản của struct cũ sang tài sản tương ứng của cấu trúc mới) khi cấu trúc được sao chép, bất kể loại nào.

Khi bạn nói "thuộc tính lớp", tôi giả sử bạn có nghĩa là một loại tham chiếu. (Kiểu có cùng tên với một lớp biểu thị một kiểu tham chiếu cho các tham chiếu trỏ tới các đối tượng của lớp đó.) Sao chép một giá trị của kiểu tham chiếu (tham chiếu) tạo một tham chiếu khác trỏ đến cùng một đối tượng. Lưu ý rằng "đối tượng" không phải là giá trị trong Swift - không có "loại đối tượng" - thay vào đó, các đối tượng luôn được thao tác thông qua các tham chiếu trỏ đến chúng.

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