-
[Swift] 객체 생성자, 해제자iOS/Swift 2022. 12. 4. 11:16이니셜라이저 (Initializers)이니셜라이저는 특정 타입의 인스턴스를 생성합니다. 이니셜라이저의 가장 간단한 형태는 파라미터가 없고 init 키워드를 사용하는 것입니다.
import UIKit class MyFriend { var name : String init(_ name: String = "이름없음"){ self.name = name print("MyFriend가 메모리에 올라갔다 - \(name)") } deinit { print("메모리에서 사라짐 - \(name)") } var calledTimes = 0 let MAX_TIME = 5 static var instancesOfSelf = [MyFriend]() class func destroySelf(object: MyFriend){ instancesOfSelf = instancesOfSelf.filter{ (aFriend : MyFriend) in aFriend !== object } } func call(){ calledTimes += 1 print("called \(calledTimes)") if calledTimes > MAX_TIME { MyFriend.destroySelf(object:self) } } } var myFirstFriend = MyFriend() print("이름없음 끝") let mySecondFriend = MyFriend("단비") print("단비 끝") //인스턴스 메모리에서 해제하기 weak var selfDestructingObject = MyFriend("수진") print("수진 끝") if selfDestructingObject != nil { selfDestructingObject!.call() } else { print("object no longer exists") }
출력 결과
MyFriend가 메모리에 올라갔다 - 이름없음 이름없음 끝 MyFriend가 메모리에 올라갔다 - 단비 단비 끝 MyFriend가 메모리에 올라갔다 - 수진 메모리에서 사라짐 - 수진 수진 끝 object no longer exists
'iOS > Swift' 카테고리의 다른 글
[iOS 앱개발] 앱에서 이메일 보내기 예제 (0) 2022.12.05 [Swift] 상속 (0) 2022.12.04 [Swift] 제네릭 (Generics) (0) 2022.12.02 [Swift] 메소드 (Methods) (0) 2022.12.02 [Swift] 클래스와 스트럭트 (0) 2022.12.01