ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [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

    댓글

Today
Designed by Danbee Park.