2024/11 5

[11/11 Swift] 프로그래머스 - 자릿수 더하기

이 문제를 보자마자 생각한 풀이법은 우선 각 자릿수를 쪼개야겠다 였다. 그런데 어떻게 해야 쪼갤 수 있는지 몰랐고 구글링을 했더니 String을 써서 각 숫자를 불러낼 수 있었다. String은 Character 타입의 시퀀스로 구성된다고 한다. 시퀀스(sequence)란 '순서가 있는 데이터들의 나열'을 의미한다. 대표적인 타입으로는 Array, String, Dictionary가 있다. 시퀀스를 사용하면 데이터들을 차례대로 하나씩 순회할 수 있어 for문에서 많이 사용한다.Int(String(i))는 숫자형이 아닐 경우 nil을 출력해야하므로 옵셔널 타입이다. 이 코드에서는 숫자형인 게 보장되므로 강제 언래핑을 사용하고 있다. 다른 사람들의 풀이를 보다가 발견한 풀이법이다. 주어진 숫자를 10으로 나..

[11/6 iOSDev] Type Casting

타입캐스팅 : 인스턴스의 타입을 확인하거나 특정 타입으로 변환하는 방법. 형변환                    class 에서 상속 관계를 이용한 타입캐스팅이 주로 사용is 연산자 : 타입 체크. 타입이 특정 클래스이거나 하위클래스인 경우 true 반환, 아닌 경우 false 반환as 연산자(Upcasting) : 슈퍼클래스로 변환(구체적인 타입에서 범용적인 타입). 항상 성공as? 연산자(Downcasting) : 서브클래스로 변환. 성공 시 Optional 타입으로 리턴, 실패 시 nil 리턴as! 연산자(Downcasting) : 서브클래스로 변환. 성공 시 Optional 타입을 강제 언래핑한 타입, 실패 시 런타임 오류 20번째 줄 person 은 Animal 타입이지만 Person 으로 인..

[11/5 iOSDev] 객체지향 프로그래밍

Object Oriented Programming(OOP) : 프로그램을 여러 개의 객체로 나누어 설계하고 구현하는 프로그래밍의 패러다임객체 : class 의 인스턴스 / 지향 : 어떤 목표로 뜻이 쏠리다 / 프로그래밍 : 개발-> class 의 인스턴스를 사용하는 개발을 지향하는 프로그래밍 방식 객체지향 프로그래밍의 4가지 특징 - 캡슐화, 상속, 추상화, 다형성 캡슐화 : 객체의 프로퍼티와 메서드를 하나의 단위로 묶어서 관리하는 것 ex) 알약캡슐화 : 관련된 내용을 묶어놓는 것은닉화 : 접근제어자를 통해서 객체 내부의 데이터를 외부에서 접근하지 못하도록 감추거나 허용 범위를 설정하는 것상속 : 하위클래스가 상위클래스의 프로퍼티와 메서드를 물려받아서 사용하는 것상위클래스에서 제공하는 연산 프로퍼티와 ..

[11/4 iOSDev] Closure

클로저 : 이름 없는 익명함수. 함수와 기능은 완전히 동일, 형태만 다름             (함수는 다른 코드가 함수 이름으로 호출하지만 클로저는 굳이 이름이 없어도 호출할 수 있는 형태)             파라미터, 구현부, 반환타입으로 구성되어 있음. 데이터 타입으로 사용 가능 구현 방법 : { (파라미터) in                          구현부                          return                  }-> 리턴형 표기를 주로 안 함-> 파라미터 이름은 생략 가능(in 키워드까지 생략해야 함)-> $0 : 첫 번째 파라미터, $1 : 두 번째 파라미터... 호출 방법 : 변수이름( )  구현하고 즉시 호출은 { } 뒤에 ( ) 바로 사용  tr..

[11/1 iOSDev] Optional Unwrapping & Protocol & Extension

- 옵셔널 바인딩 if let값이 주어졌을 경우 if let 을 통해 언래핑을 하더라도 언래핑된 값은 해당 블록에서만 사용되기 때문에 블록을 벗어난 print 에서는 Optional(10)으로 출력된다 - 옵셔널 바인딩 guard let - 기본값 제공 - 강제 언래핑 : nil이 아님이 확실할 때 사용함. 지양하는 방식  - 프로토콜 자체는 기능을 구현하지 않으며, 오직 설계만 제공함- class, struct, enum 에서 프로토콜을 채택할 수 있으며, 프로토콜에서 정의한 프로퍼티와 메서드를 모두 구현해야 함- 프로토콜에서 정의된 프로퍼티는 항상 var 로 선언되어야 함- 프로토콜에서 정의하는 프로퍼티는 읽기 전용 { get } 또는 읽기-쓰기 가능 { get set } 으로 설정 가능함- 프로토콜..