Swift Programming Language 안내서 에는 다음 예제가 있습니다.
class Person {
let name: String
init(name: String) { self.name = name }
var apartment: Apartment?
deinit { println("\(name) is being deinitialized") }
}
class Apartment {
let number: Int
init(number: Int) { self.number = number }
var tenant: Person?
deinit { println("Apartment #\(number) is being deinitialized") }
}
var john: Person?
var number73: Apartment?
john = Person(name: "John Appleseed")
number73 = Apartment(number: 73)
//From Apple's “The Swift Programming Language” guide (https://developer.apple.com/library/content/documentation/Swift/Conceptual/Swift_Programming_Language/AutomaticReferenceCounting.html)
그런 다음 아파트를 사람에게 할당 할 때 느낌표를 사용하여 "인스턴스 풀기"를 수행합니다.
john!.apartment = number73
"인스턴스 랩핑 해제"는 무엇을 의미합니까? 왜 필요한가요? 다음을 수행하는 것과 어떻게 다른가요?
john.apartment = number73
저는 스위프트 언어를 처음 접했습니다. 기본 사항을 낮추려고합니다.
업데이트 :
내가 놓친 퍼즐의 가장 큰 부분은 (답변에 직접 언급되지 않았지만 적어도이 글을 쓰는 시점에는 언급되지 않았습니다) 다음을 수행 할 때입니다.
var john: Person?
"내가 생각한대로" john
유형 Person
이고 무용지물 " 이라는 의미는 아닙니다 . 나는 단순히 오해 한 Person
과 Person?
완전히 분리 된 유형입니다. 나는 다른 모든 것을, 파악되면 ?
, !
광기, 아래의 큰 응답, 더 많은 감각을했다.