일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
- 패스트캠퍼스
- 프로그래머스
- 연결리스트삭제
- swift
- 사이드프로젝트10개기술스택으로구현하는풀스택서버리스프로젝트withReact
- Components
- 스위프트
- HTML
- 직장인인강
- 오공완
- 환급챌린지
- 패캠인강후기
- ios
- 자료구조
- eventbubbling
- stopPropagation
- MVMM
- 이벤트캡처링
- 패스트캠퍼스후기
- eventcapturing
- 실패율
- 수강료0원챌린지
- 연결리스트생성
- 패캠챌린지
- 연결리스트삽입
- JavaScript
- hig
- 코딩테스트
- 직장인자기계발
- 이벤트버블링
- Today
- Total
목록ios/기본문법 (14)
날쌘 개발자
guard문 간단하게 설명하자면 조건을 걸러낼 때 사용한다. 보통 함수의 시작점에 넣어 반드시 가져가야 할 조건들을 검사하는 용도라고 한다. if문으로도 대체가능하지만, 가독성면에서 훨씬 깔끔하기 때문에 함수의 초반부터 걸러야 할 조건들이 있다면 보기쉽고 깔끔하게 걸러낼 수 있다. 생긴 모습을 보자면 guard 조건 else {조건이 false일때 실행될 구문} 이렇게 생겼다. 아까 말한대로 조건을 걸러낸다는 표현이 딱 맞는 친구이다. guard 뒤에 조건을 넣고, 조건이 false일 경우 else 뒤의 구문이 실행되는 형식이다. if문을 덕지덕지 붙히는것보다 확실히 가독성이 좋아 보인다. 활용한 예시 func plusOne(num: Int) { guard num < 10 else {return} pri..

delegate delegate(델리게이트)는 거의 안보이는곳이 없을정도로 IOS를 공부하다보면 자주 보이는.. 그만큼 중요한 개념이다. 직역하면 '대리자' 혹은 '위임자' 라고들 부르고 정의를 검색해보면 '소프트웨어 엔지니어링에서 Delegate 패턴은 객체 지향 디자인 패턴중 하나로써 상속과 비슷하게 재사용을 가능하게 해주는 패턴' 이라고 나오는데, 이놈이 하는일은 대리자 라는 말 그대로 일을 대신해준다고 보면 되겠다. 조금 풀어 설명하자면 - 객체 지향 프로그래밍에서 하나의 객체가 모든 일을 처리하는것이 아닌, 처리 해야 할일 중 일부를 다른 객체에 넘겨 대신 해주는 게 델리게이트 패턴 이라고 한다. 이 델리게이트라는놈을 알기 위해서는 먼저 저번에 공부했던 프로토콜에 대해 잘 알아야한다. 프로토콜은..

MVVM 저번에 설명했던 MVC패턴과 마찬가지로 앱개발에 자주 사용되는 디자인 패턴중 하나이다. 다만 현재 내가 주로 사용하는 프레임워크인 UIKit는 MVC패턴을 주로 기반으로 하는 반면, MVVM패턴은 SwiftUI프레임워크에서 주로 사용하는 디자인 패턴이라고 한다. 이번에 작게 개인적으로 진행하게된 프로젝트가 UIkit프레임워크를 기반으로 하고 MVMM패턴을 채택한 프로젝트라, 겸사겸사 MVMM에 대해 먼저 알아보기로 하였다. MVVM은 MVC 의 C에 해당하는 Controller를 빼고 대신 ViewModel을 추가한 패턴이다. ViewModel 또한 Controller처럼 View와 Model사이의 중간역할을 한다. 하나씩 설명해보자면 Model MVC에서의 그것과 마찬가지로 실제적 데이터에 해..
원래는 프로토콜 개념을 이어서 정리하려 했는데... 알아보기전에 먼저! 프로퍼티라는 개념(?)을 매번 사용하지만 뭔가 프로퍼티의 개념과 종류.. 종류별 특징들에 대한 개념이 아직 정립되지 않은것 같아 한번 정리하고 가려고 한다. 먼저 프로퍼티라는 놈은, 필드(데이터 멤버)와 메소드 간 기능의 중간인 클래스 멤버의 특수한 유형 이라고 하는데, 쉽게말해 클래스/구조체/열거형 에 값을 연결해주는 놈이다. 프로퍼티의 종류는 크게 저장 프로퍼티 - 상수 / 변수 값을 저장하는 프로퍼티 연산 프로퍼티 - 특정 연산을 수행하여 값을 반환하는 프로퍼티 타입 프로퍼티 - 타입 자체에 연결되는 프로퍼티 이렇게 세가지로 나뉜다. 한놈씩 살펴 보겠다. 저장 프로퍼티 (Stored Property) 흔히 클래스와 구조체에서 선..
프로토콜 - (1) 이번에는 프로토콜에 대해서 정리해보려 한다. 아직 이해가 부족해 틀린부분이 있을수도 있으므로 틀린부분이 있다면 지적 부탁드립니다.. 먼저 프로토콜이란, "특정 역할을 수행하기 위한 메소드, 프로퍼티, 기타 요구사항 등의 청사진", "약속, 규약" 구조체, 클래스, 열거형들에서 프로토콜을 "채택"하여 특정 기능을 실행하기 위한 프로토콜의 요구사항을 실제로 구현할 수 있다. +구현해야 할 요구사항을 지정하는 것 이외에도, 프로토콜을 확장(extension)하여 이러한 요구사항 중 일부를 구현하거나, conforming타입에서 활용할 수 있는 추가 기능을 구현할 수도 있다. 중요한점은 프로토콜은 기능을 정의하고 제시할 뿐 스스로 기능을 구현하지는 않는다는 것. 기본형태 protocol My..

MVC 여태 공부를 하며 MVC에 대한 개념도 많이 들었고, 실제로 (강의를따라서) 여러번 구현해 보았지만, 여전히 개념이 모호하고, 감이 안잡히는 부분이 많아 한번 기초부터 정리해보겠다. 먼저 MVC는 ios개발에 사용되는 아키텍처중의 하나인데 여기서 Architectures란 프로그램의 구조? 라고 보면 될 것 같다. 아키텍처를 사용하는 이유는 여러가지가 있지만 그중 균형잡인 분배에 최적화된 패턴 중 하나가 MVC 패턴이다. 사실 아키텍처와 디자인 패턴의 관계에 대해 의구심이 들지만, 조만간 알아보기로 했다. 아무튼 MVC는 Model, View, Controller를 줄인 말인데, 하나하나 정의를 보자면 다음과 같다. Model - 앱에서 '무엇' 에 해당하는 UI, 독립적인 개체들 즉 앱이 가지는..
components가 궁금해 구글링해보았는데, split이라는 친구와 쌍으로 문자열을 다룰 때 자주 쓰는 메소드라고 한다 먼저 split메소드의 예시부터 보겠다. var s = "I am swift developer" let sSplit = s.split(separator: " ") print(sSplit) // ["I", "am", "swift", "developer"] split메소드의 separator 매개변수로 값을 받고, 받은 값을 기준으로 문자열을 나눠 [Substring] 형태로 반환해준다. 여기서 중요한점은, 기준으로 하는 문자는 기준으로만 사용하고 제외한 채 반환한다는 점이다. split메소드의 parameter는 separator뿐만 아니라 나눠주는 최대 횟수를 지정해주는 maxSpli..
문제를 푸는 중 lowercase라는게 보여 한번 알아보았다. 단어 뜻 그대로 문자열 내의 대문자를 소문자로 만들어주는 쉬운 개념이었는데, 반대로 대문자로 만들어 줄 때는 uppercase를 사용하면 된다. import Foundation func solution(_ s:String) { let string = s.lowercased() print(string) // "ppoooyy" } solution("pPoooyY") 다음은 components를 알아보겠다.
고차함수 고차함수(Higher-order function)란, 다른 함수를 전달인자로 받거나 함수실행의 결과를 함수로 반환하는 함수 라고 한다. 스위프트에서 제공하는 고차함수에는 Map, Filter, Reduce가 있는데, 코딩테스트 문제를 풀때 다른 사람들이 푼 방법중 간결한 코드에는 항상 포함되어있었던것이 기억에 남는다. 이놈들은 스위프트 표준 라이브러리의 컨테이너 타입인 Array, Set, Dictionary 등에 구현되어 있다. Map map(변형)함수는 컨테이너 내부의 기존 데이터를 변형하여 새로운 컨테이너를 만든다. 이때 기존의 컨테이너는 변경되지 않는다! 기존의 for - in 구문과 유사하지만, 보다 코드가 간결해지고, 재사용이 용이해지며, 컴파일러 최적화 시 성능이 좋아진다는 장점이 ..
본 내용은 인프런 https://www.inflearn.com/ 의 야곰님의 '야곰의 스위프트 기본문법' https://www.inflearn.com/course/%EC%8A%A4%EC%9C%84%ED%94%84%ED%8A%B8-%EA%B8%B0%EB%B3%B8-%EB%AC%B8%EB%B2%95/dashboard 에서 필기한 내용을 바탕으로 옮긴 내용입니다. 구조체 struct 이름 { /* 구현부 * } 프로퍼티 : 인스턴스 변수 메서드 : 함수 struct Sample { var mutableProperty: Int = 100 // 가변 프로퍼티 let immutableProperty: Int = 100 // 불변 프로퍼티 static var typeProperty: Int = 100 ..