👨🏻‍💻iOS 공부/Swift 기본기 다지기

    [Swift] 인스턴스 생성 및 소멸

    지금까지 struct나 class를 생성할 때에 기본 이니셜라이저를 활용하여 인스턴스를 생성했다! 초기화가 완료된 인스턴스는 사용 후 소멸 시점이 오면 소멸되게 된다. 인스턴스를 생성하고 소멸시키는 방법에 대해서 알아보자. 인스턴스 생성 초기화는 새로운 인스턴스 사용 준비를 위해 저장 프로퍼티의 초깃값을 설정하는 역할을 한다. 즉, 기본값을 가질 수 있도록 세팅해주는 것이다. 이는 이니셜라이저를 구성하여 구현할 수 있다. 스위프트의 이니셜라이져는 값을 반환하는 형태가 아니라 초기화하는 역할 그 자체이다. 아래의 코드처럼 init 키워드를 사용하여 구현할 수 있다. class someClass { init() { // 초기화에 필요한 코드 } } struct someStruct { init() { // 초..

    [ETC_011] 프로퍼티와 메서드 (2)

    키 경로와 메서드키 경로 (신속한,재빠른을 의미하는 영단어인 Swift! 로고는 Swift라고 불리우는 칼새를 의미한다고 한다...!) 키 경로(Key Path)란 무엇일까? 보통은 struct.property 나 class.property와 같이 일반적으로 접근하나, 키 경로의 경우 간접적으로 특정 타입의 어떤 프로퍼티 값을 가리켜야 할지 미리 지정해두고 사용할 수 있다.\타입이름.경로.경로 ~ 일반적으로 위 처럼 사용되며, 예시를 통해 이해해보자.import UIKit class Person { var name: String init(name:String){ self.name = name }} struct Product { var name: String var owner: Person} print(t..

    [ETC_010] 프로퍼티와 메서드 (1)

    프로퍼티와 메서드 (1) 프로퍼티와 메서드는 무엇일까? ( 집의 정보를 나타내는 프로퍼티 ) 간단하게 먼저 알아보면 프로퍼티란 구조체(struct), 클래스(class), 열거형(enum) 등에 관련된 값을 말하고, 메서드는 특정 타입에 관련된 함수를 뜻한다. 프로퍼티는 크게 3가지로 나누어 볼 수 있다. 저장 프로퍼티 (Stored Property) 연산 프로퍼티 (Computed Property) 타입 프로퍼티 (Type Property) 저장 프로퍼티 저장 프로퍼티란 인스턴스의 변수(var) 혹은 상수(let)을 의미한다. 이는 클래스 혹은 구조체의 인스턴스와 연관된 값을 저장하는 가장 단순한 개념의 프로퍼티이다. 변수를 사용하면 변수 저장 프로퍼티, 상수를 사용하면 상수 저장 프로퍼티라고 부른다!..

    [Swift] 스위프트 readLine() 파헤치기

    사용자가 입력하는 다양한 값을 받기 위한 Swift의 readLine( )에 대해 알아보자! 사실 알고리즘 풀이하는데, 코드 도입부에서 가장 많이 등장하는... 함수여서 익힐 필요가 있을 것 같다. Apple 공식문서내 정의를 보면, 먼저 표준 입력을 받아 "문자열"로 반환한다는 것을 알 수 있다. 우리가 Int 타입을 입력하던, Double 타입을 입력하던 간에, 모두 String으로 반환한다. 이 점에 주의하여 입력한 데이터를 입맛에 맞게 데이터 타입을 변환하여 사용해주면 된다. 표준입력은 현재 입력하는 라인의 끝 혹은 EOF(End Of File)에 닿을 때 까지라고 정의하고 있다. EOF란 파일의 끝을 만났음을 알리기 위해 매크로로 정의된 값이다. 간단하게 생각하면 입력하는 값들을 전부 받아 반환..

    [ETC_009] 구조체와 클래스

    구조체와 클래스구조체(struct)와 클래스(class)는 프로퍼티와 메서드를 사용하여 구조화된 데이터와 기능을 가질 수 있다. 즉 하나의 새로운 사용자 정의 데이터 타입을 만들어 주는 것이다.구조체의 인스턴스는 값 타입이며, 클래스의 인스턴스는 참조 타입이라는게 가장 큰 차이점이다.구조체구조체는 아래와 같이 정의할 수 있다.struct 구조체이름 { 프로퍼티와 메서드들 } 위의 구조처럼 구성을 하나 이해를 위해서는 실제 사용 사례를 보자struct Student { var name : String var age : Int } 이름과 나이라는 저장 프로퍼티를 가지고 있는 구조체를 만들어보았다. 이후 이를 기반으로 인스턴스를 생성하고 초기화할 수 있다.// Student(name:,age:)로 자동 생성된..

    [ETC_008] 옵셔널

    옵셔널옵셔널은 스위프트의 특징 중 하나인 안정성을 담보하는 기법이다.옵셔널은 말 그대로 “있을 수도?,“없을 수도?”를 나타내는 표현이다. 즉 변수(var) 또는 상수(let)의 값이 nil(NULL)일 수 있다는 것이다. (+ 옵셔널 변수/상수가 아니면 nil을 할당할 수 없다.) 즉, 변수 혹은 상수가 nil일 수 있으니 사용에 주의하라는 의미를 담고 있는 것이다.nil을 할당하기 위해서는 “?”를 데이터 타입 뒤에 붙여줘야 한다.var printName: String = "cha"printName = nil// nil cannot be assigned to type "String"위 코드처럼 “?”를 붙이지 않으면 오류가 발생하게 된다.var printName: String? = "cha"print..