전체 글 666

Swift 문법 기초 8

예외 Error 프로토콜을 사용해서 표현함 주로 열거형을 사용해서 오류의 종류를 나타냄 enum ErrorName: Error { case case1 case case2 case case3 } 예외 발생 오류 발생의 여지가 있는 메서드는 throws를 사용해서 오류를 내포하는 함수임을 표시함 예시 class VendingMachine { // skip func receiveMoney(_ money: Int) throws { guard money > 0 else { throw VendingMachineError.invalidInput } self.deposited += money } func vend(numberOfItems numberOfItemsToVend: Int) throws -> String { ..

STUDY/Swift & iOS 2022.06.27

Swift 문법 기초 7

타입 확장 프로토콜 구현해야 할 요구사항을 정의하는 문법 프로토 타입을 제시하는 것이므로 기능을 직접적으로 구현하지 않음 protocol Protocol1 { // property var var1: Int { get set } var var2: String { get } //method func func1() // initializer init(var1: Int, var2: String) } 프로퍼티 요구: 항상 var 키워드 사용 get, set을 모두 명시하면 읽기 쓰기 모두 가능한 프로퍼티 get은 읽기만 가능해도 상관 없음 메서드 요구 이니셜라이저 요구 채택과 준수 채택(adopted): 구조체, 클래스, 열거형에서 프로토콜을 사용하는 것 준수( conform): 프로토콜을 구현하는 것 struc..

STUDY/Swift & iOS 2022.06.27

이번 주를 돌아보며 (0620~0626)

1. 회사..? 회사에 나가서 업무에 필요한 공부만 하는중이다. 어떤 업무를 하는지는 얼추 알게는 되었는데 그거에 맞는 공부인지는 모르겠다. 강의 찾아듣고 책읽고 남는시간 프로그래머스로 C++ 연습하고 하는 중이다. 이번달쯤엔 업무 부여한다고 했는데 다들 바쁘셔서 관심이 적은거같고 주어지지 않는듯하다. 뭐 일을 안하는 점에선 좋으나 너무 안해서 막상 업무를 받았을때 따라갈수 있을지 불안하다. 2. 광교살이 1주차 기숙사에 온지 일주일이 지났다. 기숙사는 입주한지 얼마 안된 아파트, 오피스텔에 같이 있다. 올해 입주 시작한 건물이라 내부 시설도 꽤 좋다. 입주민들을 위한 내부시설이 잘 되어있고(아직 몇 곳은 열리지 않았다.) 건물 자체가 깔끔하다. 그리고 위치는 광교 호수 근처에 있다. 지난주말에 호수공..

OTHERS/내 생각 2022.06.25

Swift 문법 기초 6

옵셔널 심화 옵셔널체이닝 매번 nil을 확인하지 않고 최종적으로 원하는 값이 있는지 없는지 확인할수 있음 class Person { var name: String var job: String? var home: Apartment? init(name: String) { self.name = name } } class Apartment { var buildingNumber: String var roomNumber: String var `guard`: Person? var owner: Person? init(dong: String, ho: String) { buildingNumber = dong roomNumber = ho } } let dg: Person? = Person(name: "Donggun") le..

STUDY/Swift & iOS 2022.06.25

Swift 문법 기초 5

프로퍼티 구조체, 클래스, 열거형 내부에 구현할수 있음 열거형 내부에는 연산 프로퍼티만 가능 프로퍼티의 종류 struct Student { var name: String = "dg" // 인스턴스 저장 프로퍼티 var koreanAge: Int = 1 var westernAge: Int { // 인스턴스 연산 프로퍼티 get { return koreanAge - 1 } set { koreanAge = westernAge + 1 } } } 인스턴스 저장 프로퍼티: 인스턴스 내부에 저장된 변수 인스턴스 연산 프로퍼티: 인스턴스 내부에 있는 변수이고 연산을 통해 다른 값을 가져오고 세팅할수 있는 변수 get 만 있는 경우 읽기전용 프로퍼티로 사용 struct Student { static var descrip..

STUDY/Swift & iOS 2022.06.21

Swift 문법 기초 4

사용자 정의 타입 구조체 value 타입 struct Sample { // instance property var mutableProperty: Int = 100; let immutableProperty: Int = 200; // type property static var typeProperty: Int = 100; // 인스턴스 메서드 func instanceMethod() { print("instance method") } // 타입 메서드 static func typeMethod() { print("type method") } } 가변 인스턴스로 선언하면 가변 프로퍼티는 변경 가능, 불변 프로퍼티는 변경 불가능 불변 인스턴스로 선언하면 가변 프로퍼티도 변경 불가능 인스턴스 메서드: 인스턴스를 선언..

STUDY/Swift & iOS 2022.06.20

이번 주를 돌아보며 (0613~0619)

1. 회사 이야기 폭풍전야인 듯 잔잔한 한 주 였다. 주 초엔 인터넷 강의로 SW 공학과 C++ 강의를 들었다. SW 공학은 개발 프로세스(기획, 개발, 테스트, 유지보수 등등)에 대해 효율적으로 관리하는 문학인데 이론이라 그런지 머리에 잘 안들어온다. 이번에 들으면서 실무에 들어가고 강의를 자주 보면서 체득해야겠다고 느꼈다. 켜놓고 딴짓을 하거나 멍때리는 시간이 더 길었던 것 같다. C++ 강의는 개인적인 관심이 있어서 들었다. 업무에선 C를 더 쓰지만 C++은 계속 발전하고 있기 때문이기도 하고, 문법은 어느정도 알고 있지만 C계열의 코딩 스타일을 계속 익히려고 한 것도 있다. 한쪽엔 강의를 한쪽엔 vscode를 켜고 따라치면서 공부했는데 재밌어서 시간이 꽤 잘갔다. 강의만 들으면 머리에 남는게 없는..

OTHERS/내 생각 2022.06.19

이번 주를 돌아보며 (0606~0612)

1. 회사 얘기 이번주엔 회식을 두번했다. 두번 모두 동기 회식이었다. 동기들끼리 모이는 자리라 부담은 없었지만, 매우 일찍 자는 나한텐 수면 패턴이 꼬이는게 힘들었다. 두 회식 모두 적당히 먹고 놀다 들어갔지만 집에 도착했을땐 자는 시간보다 한참 지난 시간이었다. 집들어와서 청소하고 씻고 자서 더 늦게 잔것도 있다. 동기 회식을 언제까지 다닐지 살짝 고민이다.(어차피 가서 말도 잘 안하는디..) 2. 홍길동 이번 주말은 홍길동처럼 동에 번쩍 서에 번쩍 했다. 금요일에 대전 토요일에 동탄 일요일에 다시 대전찍고 자취방으로 왔다. 일이 있어 어쩔수 없이 왔다갔다 했는데 그 덕분에 현재 컨디션이 난조이다. 이 정도로 컨디션이 이렇게 안좋아질줄은 몰랐다. 잠을 못자서 그런건지 뭘 잘못 먹어서 그런건지.. 체..

OTHERS/내 생각 2022.06.13

Swift 문법 기초 3

옵셔널 값이 있을수도 없을수도 있음 let opt: Int? = nil nil 가능성이 있는 곳에서 직접 확인 하지 않아도 사용할수 있음 nil 가능성을 문서나 주석으로 남기지 않아도됨 예시) func func1(optParam: Int?) {} func func2(param: Int) {} func1(optParam: nil) // ok func2(param: nil) // error optional = enum + general enum Optional : ExpressibleByNilLiteral { case none case some(Wrapped) } let optVal: Optional = nil // 원형 let optVal2: Int? = nil // 가능 ?: 옵셔널 기존 변수처럼 사용할..

STUDY/Swift & iOS 2022.06.13

Swift 문법 기초 2

조건문 if-else 구문 if 조건 { } else if 조건2 { } else { } 조건문에 괄호를 쳐도 되고 안쳐도 됨 switch 구문 switch 비교값 { case 패턴: /* 실행 구문 */ default: /* 실행 구문 */ } break를 명시하지 않아도 case 마다 break case 내부에 실행 가능한 코드가 반드시 위치해야함 default 구문은 반드시 작성해야함 fallthrough 키워드를 사용해서 break를 무시할수 있음 , 나 범위 연산자 등으로 여러 패턴을 명시할수 있음 반복문 for - in for item in items { /* 실행 구문 */ } 파이썬과 비슷함 while while 조건 { } 조건에 숫자가 들어가면 에러. Bool 값 필요 repeat-wh..

STUDY/Swift & iOS 2022.06.09