전체 글 158

[Swift] 함수

본 포스팅은 '스위프트 프로그래밍 (3판) - 야곰 저' 도서와 앨런 Swift 문법 마스터스쿨 강의를 통해 공부하며 정리하는 포스팅입니다. 혹시 틀린 부분이 있거나 질문이 있으시다면 언제든지 댓글 달아주시면 정말 감사하겠습니다 :) 0. 함수를 사용하는 이유 반복되는 동작을 단순화하여 코드 재사용 코드를 논리적 단위로 구분하여 모듈화 코드길이가 긴 것을 단순화 1. 함수 - Swift에서 함수는 일급 객체이다. (그 자체로 반환 값, 인자로 사용 가능) func 함수 이름(매개변수1: 자료형, 매개변수 2: 자료형...) -> 반환타입 { 실행 구문 return 반환값 } - 매개변수 = 파라미터 = 인자 : 함수의 정의에서 입력값으로 사용되는 변수 - 인수 = 아규먼트 : 함수의 호출에 사용되는 ..

🐦 Swift 2023.03.15

[자료구조/Swift] 스택 (Stack)

Swift로 직접 자료구조 구현하기 - 스택 스택 개념 설명과 C 언어 코드는? 여기를 참고해주세요! 혹시 틀린 부분이 있다면 지적해주시면 감사하겠습니다! 1) 뼈대잡기 - 스택에 담길 요소를 담은 배열 elements - count는 스택의 크기로, 배열의 크기이며 isEmpty는 스택이 비어있는지 확인하는 변수로, pop 연산이나 peek 연산 수행 시 쓰인다. struct Stack { var elements: [T] = [] //제너릭으로 배열 생성 var count : Int { return elements.count } var isEmpty : Bool { return elements.isEmpty } } 2) 관련함수 - 스택에는 데이터를 추가하는 push(), 데이터를 꺼내오는 pop() ..

[Swift] 흐름제어

본 포스팅은 '스위프트 프로그래밍 (3판) - 야곰 저' 도서와 앨런 Swift 문법 마스터스쿨 강의를 공부하며 정리하는 포스팅입니다. 혹시 틀린 부분이 있거나 질문이 있으시다면 언제든지 댓글 달아주시면 정말 감사하겠습니다 :) 1. switch 구문 - break 키워드 사용은 선택 사항이나, 케이스에서 실행하려는 코드가 없을 때 break 문을 반드시 사용해야함 - 입력값은 정수/부동소수 뿐만 아니라 문자, 문자열, 열거형, 튜플, 범위 등 대부분의 타입에 사용할 수 있음 - 케이스를 콤마로 연결 가능하며, switch 문에서는 또는(or)의 의미 1) 기본 switch 문 //1. 기본 switch 문 switch 입력값 { case 비교값 1: 실행구문 //break는 선택사항 case 비교값 ..

🐦 Swift 2023.03.14

[iOS/GCD] 2. GCD의 개념 및 종류

Swift로 동시성 프로그래밍을 구현하는 방법은 GCD, Operaion, async/await이 있다. 여기서는 GCD, DispatchQueue에 대해 알아보도록 하겠다. (혹시 틀린 정보가 있으면 댓글로 알려주시면 감사하겠습니다!) Dispatch(=GCD)란? *공식문서 링크: https://developer.apple.com/documentation/dispatch - 멀티코어 하드웨어에서 코드가 동시에 실행되도록 자동으로! iOS에서 관리해주는 시스템 - GCD는 응용 프로그램 각각을 자동으로 효율적으로 자원을 사용하도록 분배해준다. DispatchQueue란? *공식문서 링크 : https://developer.apple.com/documentation/dispatch/dispatchqueu..

🍎 iOS/GCD 2023.03.10

[iOS/GCD] 1. 코어/스레드/프로세스, 직렬/병렬/동시, 동기/비동기

코어와 스레드, 프로세스 용어 정리 코어 : CPU의 핵심으로 CPU에서 실제로 일을 처리하는 본체 - 코어가 많다 = 작업을 처리해줄 친구가 많다. (알바생이 많다) - 코어는 한 번에 한 가지 일만 처리할 수 있음. 그러나 실제로는 싱글 코어를 가진 컴퓨터라도 음악을 들으며 문서를 작성하는 등 여러 작업을 동시에 처리할 수 있다. - 햄버거집에 알바생이 1명 있다고 가정해보면 (싱글코어), 치킨 햄버거, 불고기 햄버거, 치즈 햄버거를 동시에 만들고 있음을 볼 수 있다. 하지만 이것은 한 번에 만드는 것처럼 보이는 것이지, 사실은 일을 짧은 단위로 나누어서 하나씩 번갈아가면서 요리를 하는 것임 (이걸 운영체제 용어로 시분할! 이라고 함) - 각 햄버거의 빵을 올리고, 불고기를 굽고, 치즈를 올리고 ....

🍎 iOS/GCD 2023.03.10

[Swift] 데이터 타입 기본

본 포스팅은 '스위프트 프로그래밍 (3판) - 야곰 저' 도서와 앨런 Swift 문법 마스터스쿨 강의를 공부하며 정리하는 포스팅입니다. 혹시 틀린 부분이 있거나 질문이 있으시다면 언제든지 댓글 달아주시면 정말 감사하겠습니다 :) 1. 데이터 타입 - 프로그램 내에서 다뤄지는 데이터의 종류 - 스위프트의 기본 데이터 타입은 모두 구조체를 기반으로 구현되어 있음 - 스위프트의 모든 데이터 타입 이름은 첫 글자가 대문자로 시작하는 대문자 카멜케이스를 사용한다. 2. 데이터 타입 종류 설명 예시 Int 정수 - 최대값 9,223,372,036,854,775,807 -5, 1, 3, 100, 1000... Float, Double 부동소수 타입 - Float은 최대 6자리, Double은 최대 15자리 까지의 ..

🐦 Swift 2023.03.08

[iOS/Swift] UITableView 행 삭제를 빠르게 했을 때 앱 크래쉬 나는 현상 (App Crash When Deleting row fastly)

1) Issue 사이드프로젝트의 QC를 진행하던 중, 아래 테이블뷰 옆에 달려있는 행 삭제 버튼을 빠르게 연타(삭제 버튼을 누르면 해당 항목이 삭제되고 그 다음 항목이 올라오게 되는데, 그 버튼을 계속 빠르게 연타했을 때의 상황이었음) 했을 때 앱이 크래쉬난다는 이야기를 팀원으로부터 들을 수 있었고 Firebase Crashlytics의 내용을 살펴보니 아래 내용에서 크래쉬가 나고 있었음을 알 수 있었다. 아래 코드는 현재 내가 누른 셀의 테이블뷰에서의 indexPath를 가져오는 코드이다. 에러는 'doneTableView의 현재 cell의 indexPath를 가져올 수 없다. nil값인데 강제로 왜 언래핑 하려고 하니!' 라는 에러였다. 2) Problem 우선 cell에 해당하는 indexPath가..

[Swift] 스위프트

본 포스팅은 '스위프트 프로그래밍 (3판)' 도서와 레퍼런스를 참고하여 Swift 프로그래밍에 대해 정리하는 글입니다. 혹시 틀린 부분이 있거나 질문이 있으시다면 언제든지 댓글 달아주시면 정말 감사하겠습니다 :) 1. 스위프트란 무엇인가? - 안전을 우선으로 하는 프로그래밍 패턴 지향하는 언어 - ARC(Automatic Reference Counting, 자동 참조 카운팅) 지원하므로 쉽게 메모리를 관리할 수 있음 * arc 공식문서 : https://docs.swift.org/swift-book/documentation/the-swift-programming-language/automaticreferencecounting/ ARC는 클래스 인스턴스가 더 이상 필요하지 않을 때 메모리를 자동으로 해제하..

🐦 Swift 2023.03.07

[Swift] 조합(combination), 순열(permutation)

✅ 조합 vs 순열 차이 - 순열 : AB, BA가 다름 (순서가 중요하기 때문에) - 조합 : AB, BA가 똑같음 (순서가 중요하지 않음) 예를들어 자물쇠 번호를 123으로 해야만 풀리고 321로는 풀리지 않듯이, 순서가 중요한 것이 순열이며 샐러드에 닭가슴살을 넣은 다음 드레싱을 넣든, 드레싱을 넣은 다음 닭가슴살을 넣든 결과는 똑같기 때문에 순서는 중요하지 않는 것이 조합이다. 조합 - 순서와 상관없이, 중복 없이 n개중에 r개를 선택한 경우들을 나열 - 예를들어 [1, 2, 3]에서 서로 다른 2개의 원소를 뽑아 나열하는 경우, 중복을 고려해야하기 때문에 (1, 2), (1, 3), (2, 3)의 경우의 수가 존재한다. - 조합 공식 : func combi(_ nums: [Int], _ targ..

[Swift] 프로그래머스 - 문자열 압축 (Level. 2)

문제 https://school.programmers.co.kr/learn/courses/30/lessons/60057?language=swift 코드 import Foundation func solution(_ s:String) -> Int { let N = s.map { String($0) } if N.count == 1 { return 1 } var array = [N.count] //맨 처음 비교대상은 한번도 압축이 되지 않을때, 즉 문자열 자체의 길이 var answer = "" var prev = "" var count = 1 for step in 1...N.count/2 { //최대로 압축할 수 있는 범위가 문자열 절반의 길이 answer = "" prev = N[0.. N.count - 1..

반응형