분류 전체보기 16

[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 } 으로 설정 가능함- 프로토콜..

[10/31 iOSDev] 계산기 만들기

오늘 드디어 프로그래밍 기초 주차 과제인 계산기 만들기를 시작했다. 구현 과정이 상세하게 적혀있어서 흐름을 어떻게 가져가면 되는지 조금이나마 감을 가질 수 있었다. 첫 번째 궁금한 점은 연산을 수행할 수 있는 클래스를 만들라고 해서 그럼 함수를 class 안에 작성해야 하는지 확신이 안 들었고 두 번째 궁금한 점은 숫자가 몇 개 입력되느냐에 따라 달라질 것 같은데 그걸 어떻게 해결하는지였다.튜터님께 질문을 드렸더니 연산식을 함수로 표현하면 된다는 답변과 지금 예시에 주어진 게 파라미터로 숫자 2개를 입력받는 것이기 때문에 파라미터로 2개만 작성하라고 하셨다.함수 반환형을 Int 로 정하면 무조건 정수형을 반환해야 하고 print 뿐만 아니라 return 도 작성해야 해서 코드가 길어졌다. 또한 연산이 불..

[10/30 iOSDev] Class & Struct

인스턴스 : class, struct, enum에서 실제 생성되어 메모리에 저장되는 값 class는 반드시 init 초기화를 제공해야 함. 단, 모든 프로퍼티에 default 값을 제공하거나 Optional 인 경우 생략 가능struct는 직접 init을 정의하지 않아도 모든 프로퍼티의 초기화를 자동으로 생성해 주는 Memberwise Initializer 기능을 제공함 ClassStructReference TypeValue Type인스턴스를 let 으로 만들어도 내부 프로퍼티 변경 가능불가능(var로 만들어야 함)메서드 내에서 프로퍼티 변경 가능mutating 키워드 사용해서 변경 가능상속 가능상속 불가능메모리에 오랫동안 저장X

[10/28 iOSDev] Swift 기초 강의

오늘 들은 기초 강의 복습 부분 중 recap(1) 문제들에서 작성하지 못했던 한 문제에 대해서 TIL을 쓰려한다.Int 타입을 파라미터로 받고 반환 타입은 없는 함수를 작성하고 guard를 사용해서 파라미터 값이 특정 값보다 작을 때와 클 때 출력되는 값을 다르게 하는 문제였다.함수를 작성하는 것까지는 하였는데 guard에서 print문을 어디에 작성해야 하는지 몰랐고, guard 조건에 해당하는지 체크하고 조건문을 거치고 나와서 print문을 작성해야 원하는 값을 얻을 수 있다는 것을 알게 되었다.guard는 조건이 true일 때는 계속 진행하고 false일 경우에는 else에 있는 것을 실행시킨 후 빠져나오는 개념인데 잘 안 와닿아서 헷갈린다.

[10/24 iOSDev] 팀 소개 앱 - 개인 페이지 만들기

오늘은 팀 소개 앱 만들기 프로젝트에서 나의 개인 페이지를 만드는 작업을 하였다. 스토리보드를 사용해서 이것저것 만져보는 게 목표였는데 아직 다룰 수 있는 기능이 많이 없어서 다양하게 만져보지는 못했다.구글링을 통해 이미지 가져와서 넣는 법, 버튼에 링크 연결해서 해당 페이지로 바로 연결되게 하는 법, 한 번에 stack view 로 묶어서 이동하는 법, 기기 화면 사이즈와 관계없이 일정한 비율의 위치에 기능들을 배치하는 법 등을 찾아보았다.처음에는 숫자로 지정해야하는지 모르고 스토리보드 상에서 예쁘게 위치를 잡아서 배치를 했는데 실행을 하니 한쪽으로 왁 쏠려있어서 관련 정보들을 찾아보니 constraint 를 이용해야 했다.버튼을 클릭했을 때 링크로 바로 연결되게 하려면 button 과 ViewCont..

[10/22 iOSDev] Git, Github

Git : 형상관리 도구 - 소프트웨어 개발 중 변경사항을 관리하기 위한 도구Git 을 쓰는 이유 : 버전 관리, 협업 지원, 브랜치 관리, 변경 이력 추적Github : Git 저장소를 온라인에서 관리할 수 있게 해주는 웹 기반 플랫폼 Local 저장소 : 내 컴퓨터에 저장된 Git 저장소Remote 저장소 : 원격 저장소에 저장된 Git 저장소Local 에서 작업한 변경사항을 사람들과 공유하려면 Remote 저장소에 Push, Pull Request 사용해서 업데이트 해야함Remote 저장소에서 내용을 Local 로 가져오려면 Pull 사용 Git 은 GUI 툴을 사용하는 방법과 커맨드라인(터미널) 을 사용하는 방법이 있음 git init : 새로운 Local 저장소를 생성할 때git clone UR..