You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
classPerson{letname:Stringinit(name:String){self.name = name }varapartment:Apartment?deinit{println("\(name) is being deinitialized")}}classApartment{letnumber:Intinit(number:Int){self.number = number }
weak vartenant:Person?deinit{println("Apartment #\(number) is being deinitialized")}}
weak를 사용하는 코드
classCustomer{letname:Stringvarcard:CreditCard?init(name:String){self.name = name
}deinit{println("\(name) is being deinitialized")}}classCreditCard{letnumber:UInt64
unowned letcustomer:Customerinit(number:UInt64, customer:Customer){self.number = number
self.customer = customer
}deinit{println("Card #\(number) is being deinitialized")}}
unowned를 사용하는 코드
Apartment 클래스에서 tenant 변수는 옵셔널로 사용하기 때문에 순환 참조를 피하기 위해서는 weak로 사용
CreditCard 클래스에서 customer 상수는 항상 값을 가지고 있어야 하므로 순환 참조를 피하고자 unowned로 사용
The text was updated successfully, but these errors were encountered:
참조
weak와 unowned
weak
와unowned
의 차이점은 옵셔널이냐 옵셔널이 아니냐의 차이코드예제
weak
를 사용하는 코드unowned
를 사용하는 코드Apartment 클래스
에서 tenant 변수는 옵셔널로 사용하기 때문에 순환 참조를 피하기 위해서는weak
로 사용CreditCard 클래스
에서 customer 상수는 항상 값을 가지고 있어야 하므로 순환 참조를 피하고자unowned
로 사용The text was updated successfully, but these errors were encountered: