목록iOS (106)
大器晩成
계산/연산 속성(프로퍼티)연산 프로퍼티(Computed property)는 필요한 값을 제공한다는 점에서 저장 프로퍼티와 같지만, 실제 값을 저장했다가 반환하지는 않고 대신 다른 프로퍼티의 값을 연산 처리하여 간접적으로 값을 제공합니다.프로퍼티의 값을 참조하기 위해 내부적으로 사용하는 구문이 get 구문입니다. 함수와 비슷해서 내부적으로 return 키워드를 사용하여 값을 반환하는데, 여기서 반환되는 값이 프로퍼티가 제공하는 값이 됩니다.변수만 사용해서 정의 가능합니다. (값이 변경되는 속성이기 때문에, let은 불가능합니다.연산 프로퍼티는 선택적으로 set 구문을 추가할 수도 있습니다. 선택적이라는 조건이 붙은 만큼 set 구문은 필요에 따라 연산 프로퍼티에서 생략할 수 있습니다. set 구문이 생략되..
지연 저장프로퍼티(Lazy Stored Property)일반적으로 저장 프로퍼티는 클래스 인스턴스가 처음 생성될 때 함께 초기화되지만, 저장프로퍼티 정의 앞에 lazy키워드가 붙으면 예외입니다.lazy키워드가 붙은 프로퍼티는 선언만 될 뿐 초기화되지 않고 계속 대기하고 있다가 프로퍼티가 호출되는 순간에 초기화됩니다. 만약 이 프로퍼티에 클래스나 구조체 인스턴스가 대입된다면, 프로퍼티가 호출되기 전까지는 해당 인스턴스는 초기화되지 않습니다.호출되기 전에는 선언만 된 상태로 대기하다가 실제로 호출되는 시점에서 초기화가 이루어지는 저장 프로퍼티를 지연 저장 프로퍼티라고 합니다.struct Dog { var name: String lazy var weight: Double = 10.0 //선언 및 초..
프로퍼티는 저장 여부를 기준으로 저장프로퍼티와 연산 프로퍼티로 나눌 수 있다. 저장프로퍼티입력된 값을 저장하거나 저장된 값을 제공하는 역할을 합니다.상수 및 변수를 사용해서 정의 가능합니다.클래스와 구조체에서는 사용이 가능하지만, 열거형에서는 사용할 수 없습니다.// 클래스에서 저장 프로퍼티//초기화 구문을 작성하고, 그 안에서 초기값 할당//class Uesr { //에러 발생 코드// var name: String // 클래스의 경우 생성자가 없을 경우 선언과 동시에 초기화가 필요//}//#방법1 초기화 구문을 작성하고, 그 안에서 초기값을 할당class User { var name: String init(){ self.name = "" }}//#방법2 프..
명시적 초기화란프로퍼티를 선언하면서 동시에 초기값을 지정하는 경우입니다.초기화 메서드 내에서 프로퍼티의 초기값을 지정하는 경우입니다.구조체의 프로퍼티와 초기화 구문struct Person { var name: String var age: Int}//var person = Person() // 모든 속성이 초기화 되지 않았기 때문에 에러 발생var person = Person(name: "카리나", age: 25) // 멤버와이즈초기 구문멤버와이즈 초기화 구문은 인스턴스를 생성하는 형식을 정의할 뿐만 아니라, 입력된 인자값을 이용하여 프로퍼티를 초기화하는 과정까지 처리합니다.기본 초기화 구문 클래스/구조체이름(), 이 형식의 초기화 구문을 사용하려면, 객체의 모든 프로퍼티는 선언과 동시에 초기값..