[swift] nil 처리와 weak 참조

앱을 개발하다 보면 종종 nil 처리weak 참조에 관해 고민하게 됩니다. 이 두 가지는 메모리 관리와 안정성 측면에서 매우 중요한 요소입니다.

Nil 처리

Nil 처리란, 값이 유효하지 않을 때 프로그램이 예기치 않게 중단되는 것을 방지하기 위한 것입니다. Swift에서는 옵셔널을 사용하여 nil 처리를 할 수 있습니다.

아래 예제에서는 옵셔널을 사용하여 nil 처리를 하는 방법을 보여줍니다.

var name: String? = "John"
name = nil
if let unwrappedName = name {
    print("Name is \(unwrappedName)")
} else {
    print("Name is nil")
}

Weak 참조

Weak 참조는 주로 순환참조를 방지하기 위해 사용됩니다. 순환참조란 두 객체가 서로를 강하게 참조하는 상황으로, 더 이상 필요하지 않은데도 메모리에서 해제되지 않는 상황을 말합니다.

아래 예제에서는 weak 참조를 사용하여 순환참조를 방지하는 방법을 보여줍니다.

class Person {
    var pet: Pet?
    deinit {
        print("Person 객체가 메모리에서 해제됨")
    }
}

class Pet {
    weak var owner: Person?
    deinit {
        print("Pet 객체가 메모리에서 해제됨")
    }
}

var person: Person? = Person()
var pet: Pet? = Pet()

person?.pet = pet
pet?.owner = person

person = nil
pet = nil

위의 코드에서 weak 키워드가 사용된 것을 확인할 수 있습니다. 이를 통해 Pet이나 Person 중 하나가 더 이상 필요하지 않아도 메모리에서 해제될 수 있게 됩니다.

Nil 처리와 weak 참조는 Swift 개발 시 반드시 고려해야 하는 중요한 요소이므로, 적절히 활용하여 안정성과 효율성을 높일 수 있습니다.