본문 바로가기

iOS121

서브스크립트 [ Subscript ] 정의 - 컬렉션, 리스트, 시퀀스, 등,, 집합의 특정 멤버 엘리먼트에 간단하게 접근할 수 있는 문법입니다. - 클래스, 구조체, 열거형에서 스크립트를 정의해 사용할 수 있습니다. - 서브스크립트를 통해 추가적인 메서드 없이 특정 값을 할당하거나 가져올 수 있습니다. 형식 - 인스턴스 메서드와 계산 프로퍼티를 선언하는 것과 비슷합니다. - 인스턴스 메서드와 다른 점은, 서브스크립트는 읽고-쓰기 혹은 읽기 전용만 가능하다는 것입니다. - 계산 프로퍼티와 같이 setter, getter 방식을 사용합니다. - 서브스크립트의 set 인자 값을 지정하지 않으면 기본 값인 newValue를 사용합니다. subscript(index: Int) -> Int { get { // 반환 값 } set(newValue) {.. 2022. 2. 15.
프로퍼티 [ Properties ] 정의 - 클래스, 구조체, 열거형과 관련한 값입니다. - 프로퍼티의 종류는 저장 프로퍼티(Stored Properties)와 계산 프로퍼티(Computed Properties)가 있습니다. - 저장 프로퍼티는 값을 저장하고 있는 프로퍼티입니다. - 계산 프로퍼티는 값을 저장하고 있지 않고 특정하게 계산한 값을 반환해주는 프로퍼티입니다. - 계산 프로퍼티는 클래스, 구조체, 열거형에서 사용 가능하지만, 저장 프로퍼티는 클래스와 구조체에서만 사용 가능합니다. 저장 프로퍼티 (=Stored Properties) - 저장 프로퍼티는 let 키워드를 이용해서 상수로 사용하거나 var 키워드를 이용해 변수로 사용할 수 있습니다. - 다음 예제는 firstValue와 length에 첫 값과 그 길이를 각각 프로퍼티에.. 2022. 2. 14.
옵셔널 체이닝 [ Optional Chaining ] 정의 - nil일 수도 있는 프로퍼티나 메서드 그리고 서브 스크립트에 질의를 하는 과정입니다. - 옵셔널이 프로퍼티나 메서드 혹은 서브스크립트에 대한 값을 가지고 있다면, 그 값을 반환합니다. ( nil값이면 nil 반환 ) - 여러 질의를 연결해서 할 수 있으며, 연결된 질의 중 하나라도 nil이면 전체 결과는 nil이 됩니다. 예제 클래스 생성 - Person Class와 Apartment Class를 생성하겠습니다. - Person Class는 사람에 대한 정보를 갖는 클래스이고, Apartment는 집에 대한 정보를 갖는 클래스입니다. - Person Class에 home 프로퍼티와 Apartment Class에 man, owner 프로퍼티에는 nil값으로 초기화되어 있습니다. class Pers.. 2022. 2. 10.
inout 정의 - 함수의 파라미터는 상수이므로 함수 내부에서 파라미터의 값을 변경시킬 수 없습니다. - 함수에서 파라미터의 값을 변경하거나 함수가 값을 반환한 뒤에도 매개변수의 변화를 유지시킬 때 사용합니다. - inout 파라미터는 변수만을 취급하며, 함수의 인자로 전달될 때 반드시 &를 사용해야 합니다. 예제 - 받은 매개변수를 이름으로 출력시키는 sayName함수와 sayIntroduce함수가 있습니다. - 코드를 실행해보면, sayIntroduce 함수의 파라미터를 상수로 사용하지 않았기 때문에 오류가 발생합니다. func sayName(_ name: String){ print("안녕! 나는 \(name)이라고 해") } func sayIntroduce(_ name: String){ name = "Swif.. 2022. 2. 9.
mutating 정의 - 특정 메서드 내에서 구조체 또는 열거형의 프로퍼티를 수정해야 하는 경우 해당 메서드의 동작을 변경하도록 하는 것 - 구조체는 값 타입이기때문에 인스턴스 메서드 내에서 프로퍼티를 수정할 수 없습니다. - 구조체에서 메서드를 수정하기 위해 mutating 키워드를 사용할 수 있습니다. 예제 - Friend라는 구조체를 하나 생성했습니다. - Friend구조체는 name과 age 프로퍼티, changeAge 메서드를 가지고 있습니다. - 현재 코드를 실행해보면 구조체에서 메서드 안의 값을 수정하려고 했기 때문에 오류가 발생합니다. struct Friend { let name: String var age: Int init(name: String, age: Int) { self.name = name.up.. 2022. 2. 9.
제네릭 [ Generic ] 정의 - 제네릭 코드는 유연하게 코드를 작성할 수 있습니다. - 재사용함수와 자료형을 어떤 자료형이든 사용하여 작업할 수 있도록 요구사항을 정의합니다. - 코드의 중복을 방지할 수 있습니다. - 의도를 명확하게 표현하고 추상적인 방법으로 코드를 작성할 수 있습니다. 형식 - 코드의 중복과 코드를 유연하게 작성하기 위해 로 자료형을 결정합니다. - T는 함수에 넘겨진 타입의 값으로부터 추론하여 타입을 사용됩니다. func 함수이름 (매개변수명: inout T, 매개변수명: inout T){ // 코드작성 } 예제 1 제네릭을 사용하지 않는 함수 - 다음은 제네릭을 사용하지 않은 함수의 예제입니다. - 3개의 함수 모두 동일한 기능을 갖고있지만 매개변수형만 다릅니다. - in-out 인자를 통해 두 값( a.. 2022. 2. 8.