일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- hackerrank
- Safari Inspector
- Bubble Search
- IOS
- firebase
- HackersRank
- SWIFT
- 코딩테스트입문
- unittest
- AutoLayout
- UIKit
- alamofire
- Di
- Swift코딩테스트
- TDD
- RxSwift
- 카카오맵클론
- firestore
- mrc
- ReactorKit UnitTest
- ios면접
- 반응형프레임워크
- algorithm
- 시험에자주나오는것만
- RC
- Swift디자인패턴
- ARC
- iOS앱 디버깅
- 프로그래머스
- 앱의생명주기
- Today
- Total
목록전체 글 (93)
샘성의 iOS 개발 일지
Foundation Kit 이란? Cocoa Touch Framework에 속한 프레임워크 중 하나로, String, Int 등의 원시 데이터 타입과 컬렉션 타입 및 운영체제 서비스를 사용해 앱의 기본적인 기능을 관리하는 프레임워크이다. 네트워킹, App Extension과 같은 애플리케이션 지원, 파일을 읽고 쓰는 File System 등의 기능이 있다. Foundation Kit에 포함되어있는 클래스? - Archives and Serialization : JSON관련된 객체 중 JSON을 디코딩할 때 쓰는 JSONDecoder - App Support : User Notifications의 객체들 - Network : URL Loading System의 URLSession, URLSessionT..
GCD 란? Grand Central Dispatch의 줄임말로, 우리가 항상 UI를 그리는 작업을 메인 쓰레드에 요청할 때 사용하는 'DispatchQueue.main.async'의 DispatchQueue가 GCD에서 사용하는 큐의 이름이다. GCD는 main queue, global queue, custom queue가 있다. global queue를 제외하고는 기본적으로, 직렬큐의 설정을 갖고 있다. 동시큐는 여러개의 쓰레드에서 작업을 동시에 처리하게 하는 것이고, 직렬큐는 반대로, 하나의 쓰레드에서만 작업을 처리하는 방식이다. 즉, 'DispatchQueue.main().async'를 해석하면, "GCD 중 메인 큐(하나에만)에 비동기적으로 00 일 좀 해줘"가 된다. 그렇다면 반대로, 'Dis..
Foreground 앱과 사용자간의 직접적인 상호작용이 가능한 상태이다. 따라서, 메모리와 시스템 자원을 사용하는데에 우선순위가 있는 상태이다. 따라서 필요할 경우 (메모리를 많이 사용해야하는데 background에 있는 앱들 때문에 못 사용하는 경우 처럼..) background 앱을 종료하고 foreground에 있는 앱에게 우선순위를 준다. 그러므로 foreground에 있는 앱이 background로 전환할 때, 필요한 데이터를 저장하고 앱의 동작을 최소화하는 준비를 거친다. Background 앱이 사용자와 직접적인 상호작용을 하는 상태가 아닌, 대기열 상태에 있는 것이다. foreground에 있는 앱과 반대로, 최대한 적은 메모리를 사용해야한다는 제약사항이 있어 사용자의 이벤트를 받기 어렵다..
문제 설명: 정수 배열 numbers와 정수 num1, num2가 매개변수로 주어질 때, numbers의 num1번 째 인덱스부터 num2번째 인덱스까지 자른 정수 배열을 return 하도록 solution 함수를 완성해보세요. 내 풀이: import Foundation func solution(_ numbers:[Int], _ num1:Int, _ num2:Int) -> [Int] { return Array(numbers[num1...num2]) } 회고: 처음엔 단순히 numbers[num1...num2]을 return 했다가 에러가 났다. 에러 문구를 살펴보니, 배열을 numbers[num1...num2] 이렇게 자른 타입은 ArraySlice 타입이라는 문구가 써있었다. 플레이그라운드에 코드 똑같..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/b4mtVU/btsd9ecH1qt/BGehyPjf69neYKtszLdUGK/img.gif)
목적: 구글 로그인 + 유저 정보 받아서 Firebase - Realtime Database에 이름과 이메일 저장하기 준비물: Firebase Auth 프로젝트에 Google Auth 허용해놓기 1. Database를 다룰 객체 만들기 Firebase의 데이터베이스에 접근하여 데이터를 받아오고 생성하기 위해, class에 database 인스턴스를 생성해야한다. (하단 코드 참고) import FirebaseDatabase final class DatabaseManager { // 싱글톤 객체로 만들기 static let shared = DatabaseManager() private let database = Database.database().reference() private init() { } }..
문제 설명: 문자열 my_string과 문자 letter이 매개변수로 주어집니다. my_string에서 letter를 제거한 문자열을 return하도록 solution 함수를 완성해주세요. 내 풀이: import Foundation func solution(_ my_string:String, _ letter:String) -> String { return my_string.replacingOccurrences(of: letter, with: "") } 회고: 다행히도, 오늘 Firebase Realtime database에 유저 이메일 넣는데, .을 넣을 수 없다고 해서 .을 -로 대체할때 'replacingOccurrences(of:, with:)'를 써서 간단하게 풀 수 있었다. 직접 경험해야 더 기..
문제 설명: 문자열 my_string과 정수 n이 매개변수로 주어질 때, my_string에 들어있는 각 문자를 n만큼 반복한 문자열을 return 하도록 solution 함수를 완성해보세요. 내 풀이: import Foundation func solution(_ my_string:String, _ n:Int) -> String { var result = "" // result에 my_string에 있는 i번째 문자열을 n만큼 반복해서 넣기 for i in my_string { result += String(repeating: i, count: n) } return result } 회고: String(_ repeating, _ count)가 생각나지 않아, 배열로 만들고 반복해서 넣은다음에 join 해야..
문제 설명: 정수가 담긴 리스트 num_list가 주어질 때, num_list의 원소 중 짝수와 홀수의 개수를 담은 배열을 return 하도록 solution 함수를 완성해보세요. 내 풀이: import Foundation func solution(_ num_list:[Int]) -> [Int] { let evenNums = num_list.filter { $0 % 2 == 0 } let oddNums = num_list.filter { $0 % 2 != 0 } return [evenNums.count, oddNums.count] }